OS X время, пока (система / дисплей / диск) спит? - PullRequest
3 голосов
/ 17 августа 2010

Кто-нибудь знает способ опроса OS X, чтобы выяснить, сколько фактически осталось времени до того, как он войдет в спящий режим системы или активирует спящий режим отображения (или даже спящий режим диска), либо через командную строку, либо любойдругой метод (например, Ruby или Objective-C)?

Я думал, что что-то вроде pmset через командную строку могло бы предложить эту информацию, но, похоже, он только показывает и обновляет текущие настройки, а не разрешаетобратная связь о том, где в данный момент находится операционная система.

Мое требование состоит в том, чтобы у меня в настоящее время был сценарий Ruby, который я хотел бы запускать, только когда я не использую компьютер, и простой «сценарий whatcher»Я бы позволил это, но то, что «смотреть» - это то, с чем мне нужно немного помочь.

Кажется, должен быть простой ответ, но пока я не нашел ничего очевидного.Есть идеи?

1 Ответ

6 голосов
/ 17 августа 2010

Вот скрипт bash для отображения команд, которые немного сложнее.Идея состоит в том, что пользователь устанавливает время ожидания системы в панели настроек энергосбережения.Система фактически перейдет в спящий режим, если ни одно устройство, подключенное к компьютеру, не будет перемещено в течение этого времени.Таким образом, чтобы получить время до того, как система перейдет в спящий режим, нам нужна разница между этими двумя результатами.

#!/bin/bash

# this will check how long before the system sleeps
# it gets the system sleep setting
# it gets the devices idle time
# it returns the difference between the two
#
# Note: if systemSleepTimeMinutes is 0 then the system is set to not go to sleep at all
#

systemSleepTimeMinutes=`pmset -g | grep "^[ ]*sleep" | awk '{ print $2 }'`

if [ $systemSleepTimeMinutes -gt "0" ]; then
    systemSleepTime=`echo "$systemSleepTimeMinutes * 60" | bc`
    devicesIdleTime=`ioreg -c IOHIDSystem | awk '/HIDIdleTime/ {print $NF/1000000000; exit}'`
    secondsBeforeSleep=`echo "$systemSleepTime - $devicesIdleTime" | bc`
    echo "Time before sleep (sec): $secondsBeforeSleep"
    exit 0
else
    echo "The system is set to not sleep."
    exit 0
fi
...