OS X休眠时间是多久(系统/显示器/磁盘)?

3

有没有办法查询OS X以找出在系统进入休眠或激活显示器睡眠(甚至磁盘休眠)之前实际剩余多少时间,无论是通过命令行还是任何其他方法(例如Ruby或Objective-C)?

我曾认为类似pmset的命令行工具可能提供此信息,但它似乎只显示和更新当前设置,而不允许反馈操作系统目前处于哪个周期中。

我的要求是:我目前有一个Ruby脚本,我希望只在我不使用计算机时运行它,并且需要一个简单的“观察器脚本”,但“观察”什么是我需要一些帮助的东西。

似乎应该有一个简单的答案,但到目前为止我还没有找到任何明显的东西。 有任何想法吗?

1个回答

6
这是一个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

1
太好了。'ioreg -c IOHIDSystem' 是解决问题的关键。 非常感谢。 - timecode
我知道这个答案已经有12年了,但我遇到了同样的问题。解决方案只能部分地解决问题;例如在观看Youtube、演示Powerpoint、加入视频会议或使用类似Caffeine或KeepingYouAwake的工具时,它无法防止应用程序阻止睡眠。这些似乎不会影响HIDIdleTime指标。有没有办法判断一个应用程序是否正在阻止睡眠? - Tom Kludy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接