我有一个通过启动启动的守护进程。即使在DarkWake期间,它也将运行,并且没有时间在OS X重新进入休眠之前完成。

我可以想到以下解决方案,但没有找到实现此目的的方法。

  • 不要在DarkWake期间运行此守护进程。

    我浏览了Apple文档和论坛,但没有找到任何引用。
  • 在通过守护进程进行DarkWake期间,使操作系统等待完成。

    尝试在守护进程中调用pmset noidle和caffeinate。没用OS X进入休眠状态。在DarkWake模式下,OS X似乎抑制了许多通知的传递。
  • 在守护进程中检测DarkWake模式。

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

  • 请帮忙。

    最佳答案

    只需要找出这些唤醒。
    使用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/维护原因,Deep Wake从Deep Idle [CDN]唤醒:

    为了检测到这一点,应该执行以下操作:

    log show --last 1m --predicate 'subsystem == "powerd"' | grep "DarkWake from Deep Idle"
    

    另外,在脚本中使用caffeinate也可能有效(尚未对此进行测试)。

    10-07 22:50