Mac 屏幕“常亮不睡”?一行代码揪出阻止休眠的后台应用
你的 Mac 是否明明设置了 1 分钟自动熄屏,但却一整天都亮着?本文教你如何通过系统终端的一行命令,快速定位并解决导致屏幕常亮的“幕后黑手”。
你是否遇到过这种情况:明明在 macOS 的系统设置里将“闲置时关闭显示器”设置为了 1 分钟或 3 分钟,但当你离开电脑很久回来后,发现屏幕依然亮着?
这不仅浪费电量(尤其是在使用电池时),还可能加速屏幕老化。绝大多数情况下,这不是系统出了 Bug,而是某个后台软件正在“强行”阻止系统休眠。
本文将通过一次真实的排查案例,教你如何找到这个“不让电脑睡觉”的罪魁祸首。
第一步:确认基础设置
在怀疑软件问题前,先确保系统设置本身是正确的。
前往 系统设置 (System Settings) -> 锁定屏幕 (Lock Screen),检查以下两项:
- 使用电池闲置时关闭显示器 (Turn display off on battery when inactive)
- 使用电源适配器闲置时关闭显示器 (Turn display off on power adapter when inactive)
确保它们没有被设置为“从不 (Never)”。如果设置正常(例如 2 分钟或 5 分钟),但屏幕依然常亮,请进入下一步。
第二步:使用终端“精准抓捕”
很多时候,我们在“活动监视器”里很难直观地看出是谁在阻止休眠。最快、最精准的方法是询问 macOS 的电源管理系统。
- 按下
Command + Space打开聚焦搜索,输入Terminal并打开 终端。 - 输入(或复制)以下命令并回车:
pmset -g assertions
如何看懂结果?
命令运行后,你会看到一串长长的英文日志。不要慌,我们只需要关注两个部分:
1. 概览状态 (Assertion status system-wide)
查看列表顶部的 PreventUserIdleDisplaySleep(阻止用户闲置显示器休眠)。
- 如果后面的数字是 0:说明没有软件阻止熄屏,问题可能在硬件(如鼠标误触)。
- 如果后面的数字是 1:说明肯定有一个或多个软件在阻止熄屏。
2. 进程详情 (Listed by owning process)
向下滚动,找到这一部分,系统会指名道姓地列出是哪个 pid(进程ID)和软件名称在捣乱。
实战案例分析
为了方便理解,我们来看一个真实的排查日志(来自一台屏幕常亮 40 多小时的 Mac):
Assertion status system-wide:
...
PreventUserIdleDisplaySleep 1 <-- 关键点:确实被阻止了
...
Listed by owning process:
pid 402(coreaudiod): [0x000da09e...] PreventUserIdleSystemSleep named: "com.apple.audio..."
pid 62009(BaiduNetdisk_mac): [0x000c9c8e...] 41:13:54 NoDisplaySleepAssertion named: "Electron"
案情分析:
通过这段日志,我们可以清晰地看到两个问题点:
- **最大的嫌疑人:
pid 62009(BaiduNetdisk_mac)**
- 软件名:BaiduNetdisk (百度网盘 Mac 版)
- 行为:
NoDisplaySleepAssertion(禁止显示器休眠声明) - 持续时间:
41:13:54(竟然已经阻止休眠 41 个小时了!) - 原因:下载工具通常会在后台运行时阻止休眠,即使用户没有在下载,只要软件没完全退出,它可能依然持有这个“锁”。
- **次要嫌疑人:
pid 402(coreaudiod)**
- 这是系统的核心音频驱动。如果你的浏览器开着视频网页,或者麦克风被占用(如会议软件),也会出现这个进程,导致系统无法深度休眠。
解决方案
找到了原因,解决就非常简单了:
- 彻底退出问题软件:点击菜单栏图标或在 Dock 栏右键,选择 “退出 (Quit)”。注意,仅仅点击窗口左上角的红色叉号通常只是关闭了窗口,程序依然在后台运行并阻止休眠。
- 验证:退出软件后,等待你设置的自动熄屏时间(如 1 分钟),观察屏幕是否正常关闭。
总结
下次遇到 Mac 屏幕不熄灭、发热严重或者掉电飞快的情况,不要盲目重启。打开终端,输入 pmset -g assertions,系统会诚实地告诉你究竟是谁在“捣乱”。
常见黑名单参考:
- 视频播放器(IINA, VLC 等)
- 网盘/下载工具(百度网盘, 迅雷)
- 会议软件(Zoom, 腾讯会议)
- 防休眠小工具(Amphetamine - 记得检查是否忘关了)