Mac合盖后频繁唤醒、夜间掉电严重或休眠后自动开机,说明未真正休眠,需通过pmset和log命令分析电源日志定位唤醒原因,如Wake reason、DarkWake频率及阻止休眠的进程。

Mac合盖后频繁唤醒、夜间掉电严重,或休眠后立刻自动开机,说明系统没真正睡着——必须立刻查清是谁在暗中“叫醒”它,所有线索都藏在电源日志里,不查日志就调设置等于蒙眼修电路。
快速提取最近20条睡眠与唤醒原始记录
打开【访达】→【应用程序】→【实用工具】→【终端】,粘贴执行:
pmset -g log | grep -E "(Sleep|Wake|DarkWake)" | tail -20
这条命令只筛出最关键的20行原始日志,避免被大量无关信息淹没。重点盯住带【Wake reason】的行,它后面括号里的内容就是唤醒元凶,比如USB、BT、rtc (alarm)。
如果输出里压根没有Wake reason,说明Mac最近一次睡眠是完整的,当前可能处于稳定休眠状态。
精准定位最后一次唤醒的直接原因
方法一:过滤最新一条唤醒事件
在终端中运行:
pmset -g log | grep "Wake reason" | tail -1
这一步只输出最近一次唤醒的完整原因行,例如Wake reason: USB,直接锁定罪魁祸首。
方法二:查看唤醒前5秒内系统动作
运行:
pmset -g log | grep -B 5 "Wake.*reason"
该命令会把每条Wake reason及其前5行日志一起打出,你能清楚看到唤醒发生前3秒内系统在做什么——比如是否刚完成Spotlight索引、是否在写入iCloud Drive缓存、是否有第三方进程正在上报能耗数据。这比单看唤醒原因更能暴露真实诱因。
识别异常暗唤醒(DarkWake)
第一步:筛选最近10次暗唤醒事件
执行:
pmset -g log | grep "DarkWake" | tail -10
第二步:观察时间戳密度
逐行检查输出中DarkWake行的时间字段(形如2026-06-02 14:22:18 +0800)。【若每10–15分钟固定出现一次,且 Wake reason 持续为 Network 或 powerd,说明 tcpkeepalive 或 iCloud 后台保活失控】。这一步不需要额外命令,肉眼比对时间间隔即可判断是否异常。
用log show聚焦过去1小时内全过程
运行这条命令能拉出过去一小时内所有睡眠、唤醒相关记录:
log show --predicate 'eventMessage contains "Sleep" or eventMessage contains "Wake" or eventMessage contains "DarkWake"' --last 1h
输出里重点关注带Wake reason:的行,比如Wake reason: EC.LidOpen(User)表示开盖唤醒,Wake reason: USB说明有 USB 设备触发了唤醒。
若看到Sleep interrupted或反复出现DarkWake → Sleep循环,大概率有进程或硬件在阻止真正进入深度休眠。
查阻止休眠的后台活动进程
有些程序会主动“锁住”休眠状态,用断言(assertions)机制阻止系统睡眠:
执行:
pmset -g assertions
看sleep prevented by后面列出的进程名(如coreaudiod、backupd、GoogleSoftwareUpdateAgent)。
再配合日志确认:
log show --predicate 'eventMessage contains "assertion" and eventMessage contains "prevent"' --last 2h
常见干扰项包括未关闭的 Time Machine 备份、正在运行的虚拟机、调试工具(如 Xcode)、或某些第三方音视频软件。

















