咖啡因不能保持睡眠状态


5

我有一个7 macbook pro的运行mac osx 10.10,10.11和10.12,以及3 mac pro运行mac os 10.13(“high sierra”)。在所有系统上,我都将其设置为从不睡眠系统或显示器。奇怪的是,这还不够,所以我也使用咖啡因来预防睡眠。然而,在10.13系统上,无论我尝试什么,显示器仍然会进入睡眠状态。这会影响两件事:

  • 我的opengl测试挂了
  • “osascript -e'告诉应用程序”系统事件“重新启动'”挂起

由于只有显示器处于睡眠状态,我仍然可以进入并环顾四周。

我目前在caffeinate -dsiu -t 31536000下运行我的脚本,当它挂起时,显然我仍然得到了所有正确的断言:

$ pmset -g assertionslog
2017-11-20 19:34:27 -0800 : Showing all currently held IOKit power assertions
Assertion status system-wide:
BackgroundTask 0
ApplePushServiceTask 0
UserIsActive 1
PreventUserIdleDisplaySleep 1
PreventSystemSleep 1
ExternalMedia 0
PreventUserIdleSystemSleep 1
NetworkClientActive 1

然而显示在DevicePowerState 1中:

$ ioreg -n IODisplayWrangler | grep -i IOPowerManagement
| | "IOPowerManagement" = {"DevicePowerState"=1,"CapabilityFlags"=0,"CurrentPowerState"=1,"MaxPowerState"=4}

执行另一个caffeinate -u唤醒显示并将其放入DevicePowerState 4 15秒左右,然后它返回睡眠状态和DevicePowerState 1,即使我用-t给出更长的超时。我也尝试在每个断言后重复-t参数(如果令人困惑的联机帮助页意味着)。

要拯救“osascript -e”告诉应用程序“系统事件”重新启动'“,我必须发出”caffeinate -u“。“咖啡因-d”或“咖啡因-i”是不够的。

有关详细信息,请参阅https://github.com/newmarcel/KeepingYouAwake/issues/92上的评论。

我想我应该使用lldb从挂起的opengl测试中获取回溯,找出它挂起的API,然后创建一个设置适当的电源管理断言的最小应用程序,稍微睡一会,然后调用挂起的API。当我有机会的时候,我会尝试这样做。

要解决它,我目前在后台脚本中有这个:

while true
do
   caffeinate -ud sleep 10
done

但这还不够; 在所有系统上,CurrentPowerState频繁下降到1(尽管我认为只有10.13系统实际上睡眠显示并挂起我的测试)。

有没有其他人遇到这个?有什么建议我可以进一步诊断吗?


您是否考虑过尝试使用像咖啡因或安非他明这样的第三方应用程序来安装10.13机器?
jmh '17

1
第二个@jmh的建议,但也添加“反睡眠”(我相信有一个Z圈)似乎在10.13工作,虽然我没有注意屏幕消隐,因为我只关心CPU没有'睡觉(阅读:来自其他地方的远程桌面)。但另外一个问题是:如果您希望让所有这些机器保持其显示器运行,您是否将系统首选项 - >电源 - >屏幕睡眠超时设置为“从不”?如果这是macOS中的一个错误,超时会覆盖caffinated设置,那么至少现在可以解决这个问题吗?
bjb

1
我只是使用Apple的咖啡因,因为它应该足够了,我喜欢避免第三方gui应用程序。是的,我将系统偏好设置为永不休眠或使显示屏空白。
Dan Kegel
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.