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

标签 macos launchd power-management

我有一个通过 launchd 启动的守护进程。即使在 DarkWake 期间,它也会运行,并且在 OS X 再次返回 sleep 状态之前没有时间完成。

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

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

    我浏览了 Apple 文档和论坛,但没有找到任何相关引用。

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

    尝试在守护进程中调用 pmset noidle 和 caffeinate。它不起作用。 OS X 进入休眠状态。 OS X 似乎在 DarkWake 模式下抑制了许多通知的发送。

  3. 在守护进程中检测 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/维护而从深度空闲 [CDN] 进行 DarkWake:

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

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

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

关于macos - 是否可以在 OSX 中检测 Power Nap/DarkWake 模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32227580/

相关文章:

java - OS X Lion 上的 Eclipse Indigo 打字延迟

macos - 没有网络连接时启动 NetworkState

mysql - 使用 launchctl 删除 mysql

macos - 如何以编程方式判断 Mac OS X 机器是否绑定(bind)到 Active Directory 域?

windows - Windows 服务在 Mac OSX 上的对应物是什么

c - 如何从苹果网站获取套接字过滤器句柄(sflt_filter.sf_handle)的值以注册数据包过滤

c - 有人使用 BetterAuthorizationSample 吗?

power-management - STM32F407VG 待机模式唤醒原因 — WUTF 标志始终设置

java - 如何在应用程序处于后台时每 10 分钟处理一次从 Firebase 收到的 onNotificationReceived。安卓9.0

Android 以固定的时间间隔获取 GPS 位置,对电池有多大影响以及后台发生了什么如果我们每小时获取位置