MacBook DarkWake 与 FullWake:电源状态含义
了解 macOS 电源日志中的 DarkWake 和 FullWake、它们表示的系统能力、常见唤醒线索,以及为什么状态名本身不能指认某个应用。
DarkWake 表示受限的后台电源活动,FullWake 表示恢复面向用户的能力。本文解释如何阅读状态记录而不误判唤醒来源。
即使你没有打开机盖,也没有看到屏幕点亮,MacBook 仍可能记录唤醒相关事件。macOS 电源日志里常见的两个词是 DarkWake 和 FullWake。它们描述唤醒期间不同的电源能力,并不简单等同于“异常唤醒”和“正常唤醒”,也不能单凭名称指出负责的进程。
DarkWake 表示什么
DarkWake 是系统进行某些后台活动时使用的受限唤醒状态。根据硬件和 macOS,系统可能只启用部分能力,同时让显示器和普通用户会话保持非活动状态。之后系统可以重新睡眠,也可以切换到能力更完整的唤醒状态。具体表现取决于平台;不要认为每台 Mac 都支持相同唤醒类型或记录相同日志用语。
Apple 的公开 IOKit 定义区分 CPU、图形和音频等系统能力。Apple 开源的 PowerManagement 头文件也定义了睡眠、DarkWake 变体和 FullWake 的内部状态标记。源码说明电源管理确实区分这些状态,但内部实现名称不构成面向用户的行为承诺,系统版本间也可能变化。Apple PowerManagement 源码不能证明某台 Mac 一定会使用其中每一种状态。
FullWake 表示什么
FullWake 通常表示系统已恢复正常、面向用户唤醒所需的能力,例如图形和交互。不过某些情况下显示屏仍可能保持黑屏,因此日志里的“完整”也需要结合上下文理解。检查相邻日志、事件时间、唤醒原因以及显示器是否实际亮起。单个状态词不能完整描述用户看到的情况。
排查电池消耗时要注意区分事件数量和持续时间。一次短暂的后台唤醒可能属于预期行为;长时间或反复活动可能消耗更多电量,但日志标签本身无法量化耗电。应在相似条件下记录一段明确的时间,比较电池百分比,并记下电脑使用电池还是电源适配器。
不要从状态名推断具体原因
唤醒原因可能提到网络访问、维护任务、定时事件、外设或硬件信号。这些是线索,不是确定归因。例如,DarkWake 不能证明是第三方应用或“机盖角度睡眠”脚本唤醒了 Mac。macOS 和固件会协调电源切换,一个事件可能涉及多个组件。同样,日志中靠近唤醒时间出现的进程也不一定就是发起者。
Apple 对 PreventSystemSleep 的说明是,该断言可能让系统保持在 DarkWake,而不是进入睡眠。Apple 同时指出,断言只是请求,系统会结合情况尽力执行;低电量或热紧急情况仍可能导致睡眠。这不表示每一次 DarkWake 都由该断言触发。Apple API 文档说明了断言行为及其限制。
实用的日志检查方法
为事件附近的短时间段收集记录,而不是不带时间范围地搜索日志:
pmset -g log | tail -200
log show --last 1h --style compact --predicate 'process == "powerd"'
pmset 历史记录通常以紧凑格式列出睡眠与唤醒转换。统一日志可能提供额外消息,但内容受 macOS 隐私、保留时间和日志可用性影响。powerd 谓词能缩小范围,也可能漏掉由其他子系统记录的关联事件。可阅读睡眠与唤醒日志指南,按可重复的流程检查并注意隐私。
记录准确时间、屏幕是否亮起、机盖是否打开、电源来源、连接设备,以及近期定时任务或网络设置的变化。对比多次事件。如果只有连接某个扩展坞、USB 设备或网络配置时出现规律,可在短时间受控测试中每次只移除一个变量。不要一次修改多个 pmset 参数,否则难以判断结果来自哪里。
常见问题
DarkWake 是否表示 Mac 已完全醒来?
不是。它是 Apple 电源管理术语中的受限能力状态。具体表现因平台和 macOS 版本而异。
DarkWake 是否证明某个应用在睡眠时运行?
不一定。状态名没有指出应用,而且应用在后台唤醒时的行为受到限制。请结合事件日志并复现问题后再下结论。
可以关闭所有 DarkWake 吗?
没有适用于所有后台唤醒的安全通用开关。网络唤醒或 Power Nap 等系统设置是否存在,取决于 Mac 和 macOS。只调整确实存在且相关的设置,再观察结果。
如果屏幕意外亮起,可阅读MacBook 睡眠与显示器关闭的区别。如果怀疑合盖耗电,请看机盖合上时电池耗电指南,并参考兼容性说明和常见问题。诊断工具可以整理线索,但不能认证硬件维修,也不能覆盖 Apple 的电源管理决策。