mac合盖后一整夜掉电超10%说明未真正休眠,需用pmset -g log查wake reason定位唤醒源(如usb/network/bt),再用log show交叉验证app关联性,最后通过pmset assertions确认阻止睡眠的进程并退出。

Mac合盖后一整夜掉电超10%,说明系统根本没真正睡着,而是被某些进程、服务或硬件反复唤醒——必须从系统日志里揪出带“Wake Reason”的原始记录,才能锁定耗电真凶。
用pmset快速抓取最近唤醒事件
打开【终端】(访达 → 应用程序 → 实用工具),粘贴执行:
pmset -g log | grep -E "(Wake|DarkWake)" | tail -30
回车后重点找含 Wake reason 的行,括号里写着什么,就是谁干的:比如 “USB” 是外接设备、“Network” 是网卡、“BT” 是蓝牙、“rtc (alarm)” 是定时任务、“powerd” 是系统电源管理自身异常。如果同一原因每15分钟出现一次,基本锁定为周期性唤醒源,不用往下查了,直接针对性处理。
用log show精准定位App关联唤醒上下文
pmset日志只告诉你“谁叫醒了系统”,但不告诉你“为什么叫醒”。要确认是不是某个App在背后驱动唤醒,必须用统一日志系统交叉比对时间戳和进程行为。
方法一:查目标App最近1小时所有日志
log show --predicate 'processImagePath CONTAINS "Outlook"' --last 1h
方法二:查唤醒+进程共现线索
log show --predicate '(eventMessage contains "Wake" OR eventMessage contains "DarkWake") AND (processImagePath CONTAINS "OneDrive" OR processImagePath CONTAINS "Dropbox")' --last 2h
方法三:查系统级断言阻止休眠的证据
log show --predicate 'eventMessage contains "assertion" AND eventMessage contains "PreventUserIdleSystemSleep"' --last 1h
这三步输出中,若某行显示 Outlook: Sync started,下一行是 powerd: Wake from DarkWake due to network,且时间差在3秒内——这就是强关联证据。【注意:仅靠进程名匹配不够,必须验证时间邻近性】
用pmset assertions直击“防睡眠”进程
有些App会主动向系统声明“禁止休眠”,这是最直接的耗电证据。执行命令:
pmset -g assertions | grep -A 5 -B 5 "Outlook\|OneDrive\|Amphetamine"
若输出中出现 PreventUserIdleSystemSleep 或 PreventUserIdleDisplaySleep 且状态为 asserted,说明该App正主动阻止系统休眠。【这是App引发唤醒的直接证据】
常见高危名单:Amphetamine、VLC、Parallels Desktop、iCloudDrive、CCleaner、GitHub Desktop、GoogleSoftwareUpdateAgent、coreaudiod。
查到后不要直接 kill,先去活动监视器 → 能耗标签页 → 点击“防止睡眠”列排序 → 找到对应进程 → 点左上角【X】→ 选择“退出”。
聚焦内核级唤醒源:ACPI与硬件信号
如果上述步骤都没找到明确App,问题大概率藏在硬件层。执行:
log show --predicate 'subsystem == "com.apple.kernel" AND (eventMessage contains "ACPI" OR eventMessage contains "RTC wake" OR eventMessage contains "PCI power")' --last 24h
重点关注含 ACPI S3、ACPI S4、RTC wake、PCI power state 的条目。例如看到大量 RTC wake,说明主板定时器在不断拉起CPU;看到 EC.LidOpen(User),但你根本没开盖,就说明盖子传感器逻辑异常,需重置SMC。
若发现 Wake reason: EHC2 或 XHC,基本可断定是USB拓展坞、键盘或外接硬盘在持续通信;若出现 Wake reason: LID0,十有八九是盖子微动开关误触发,重置SMC后通常能解决。











