Mac半夜掉电严重说明系统被反复唤醒,需立即查Wake reason日志定位USB、蓝牙、网络或系统服务等触发源;用log show或pmset命令提取唤醒记录,结合pmset -g assertions和活动监视器排查阻止睡眠的进程。

Mac半夜掉电严重,说明系统在你睡觉时被反复唤醒,必须立刻查清Wake Reason日志里写明的触发源——它直接暴露是USB设备、蓝牙信号、网络保活还是系统服务在暗中耗电。
用终端快速提取最近唤醒原因
打开【终端】(访达 → 应用程序 → 实用工具),粘贴执行:
log show --predicate 'eventMessage contains "Wake reason"' --last 12h
回车后,所有带 Wake reason: 的行会集中显示。重点看每条末尾括号里的内容,比如 Wake reason: USB、Wake reason: BT、Wake reason: rtc (alarm) —— 这就是半夜把你Mac叫醒的“真凶”。
若同一原因连续出现3次以上(例如每15分钟一次 Network),说明该模块正在周期性拉起CPU,不用再往下查,直接禁用对应唤醒权限。
精准定位周期性唤醒源头
方法一:查最近20次暗唤醒事件
在终端执行:
pmset -g log | grep -E "(DarkWake|Wake)" | tail -20
这比 log show 更轻量,能快速看到时间戳+唤醒类型+Wake reason三要素。DarkWake 行出现频繁,但系统没真正唤醒(屏幕不亮、风扇不转),恰恰说明是后台保活机制在作祟。
方法二:过滤内核级硬件唤醒信号
执行:
log show --predicate 'subsystem == "com.apple.kernel" and eventMessage contains "ACPI"' --last 24h | grep -i "wake\|s3\|s4"
【ACPI S3 表示仅睡眠,S4 才是深度休眠】。如果日志里反复出现 S3 但不见 S4,说明 hibernatemode 没生效或被 tcpkeepalive 强行拦住——此时必须同步调整休眠策略。
关联断言排查阻止休眠的进程
第一步:查当前谁在锁住睡眠状态
终端输入:
pmset -g assertions
重点扫描 PreventUserIdleSystemSleep 后面列出的进程名。常见高危项:backupd(Time Machine备份中)、mDNSResponder(局域网设备发现)、cloudd(iCloud同步)、GoogleSoftwareUpdateAgent(后台静默更新)。
第二步:确认该进程是否真在作怪
执行:
log show --predicate 'eventMessage contains "assertion" and eventMessage contains "prevent"' --last 6h
如果某进程在你合盖后10分钟内反复出现在断言日志里,且 PreventUserIdleSystemSleep 值为 Yes,它就是电老鼠。不要直接 kill,先去活动监视器 → 能耗页 → 点击“防止睡眠”列排序 → 找到它 → 点左上角【X】→ 选“退出”。
验证唤醒源是否真实存在
① 打开【活动监视器】→ 切换到【能耗】标签页。
② 右键列标题 → 勾选【防止睡眠】和【12小时能耗】。
③ 点击【12小时能耗】列降序排列,找出数值>800且【防止睡眠】列为“是的”的进程。
④ 若发现 locationd、remoted 或 autofsd 排名靠前,【立刻退出并观察次日凌晨掉电是否低于3%】——这些服务在M系列芯片上极易因高频定位请求引发密集DarkWake。
⑤ 若无明显嫌疑进程,但日志仍显示 Wake reason: LID0,说明盖子开合传感器逻辑异常,需重置SMC。











