是否可以在OSX中检测Power Nap/DarkWake模式

use*_*345 6 macos launchd power-management

我有一个通过launchd启动的守护进程.即使在DarkWake期间也会运行,并且在OS X重新进入睡眠状态之前没有时间完成.

我可以想到以下解决方案,但没有找到实现这一目标的方法.

  1. 不要在DarkWake期间运行此守护程序进程.

    我浏览了Apple文档和论坛,但没有找到任何参考.

  2. 在DarkWake期间,通过守护进程使操作系统等待直至完成.

    尝试在守护进程中调用pmset noidle和caffeinate.它没用.OS X进入睡眠状态.在DarkWake模式下,OS X似乎禁止传递许多通知.

  3. 在守护程序进程中检测DarkWake模式.

    没有找到任何解决方案/方法来检测DarkWake模式.

请帮忙.

kjy*_*jyv 1

只需要了解这些唤醒情况即可。使用该log实用程序,当系统自行唤醒时(即使没有激活 powernap),我可以看到这些行:

2019-04-11 22:18:00.622600+0200 0x250 默认 0x0 83 0 powerd: [powerd:sleepWake] vm.darkwake_mode: 1 -> 1

2019-04-11 22:18:00.625413+0200 0x250 默认 0x0 83 0 供电:[powerd:sleepWake] 由于 RTC/维护而从深度空闲 [CDN] 进行 DarkWake:

为了检测到这一点,类似这样的事情应该起作用:

log show --last 1m --predicate 'subsystem == "powerd"' | grep "DarkWake from Deep Idle"
Run Code Online (Sandbox Code Playgroud)

或者,在脚本中使用咖啡因也可能有效(尚未对此进行测试)。