如何让 Mac 保持唤醒、不自动休眠(不用改系统设置)
下载大文件、编译或演示时不想让 Mac 睡着?用 caffeinate 命令、菜单栏开关或系统设置阻止 Mac 休眠,并学会查看是谁在阻止休眠。
Mac 觉得没人在用时就会自动进入睡眠。这对续航很友好,但如果你正在下载 40 GB 的文件、跑一个很长的编译、拷贝大量文件或导出视频,中途睡着就很让人抓狂。
想让 Mac 暂时保持唤醒,有三种好用的方法,各自适合不同的场景。
一句话答案
| 如果你想…… | 用这个 |
|---|---|
| 某条命令运行期间保持唤醒 | caffeinate -i 你的命令 |
| 保持唤醒一段固定时间 | caffeinate -i -t 3600 |
| 不开终端,随时开关 | 菜单栏开关,比如 StayAwake |
| 让台式 Mac 永远不睡 | 系统设置(永久性改动) |
方法一:macOS 自带的 caffeinate
每台 Mac 都自带 caffeinate 命令。它运行期间会持有一个电源断言(power assertion),也就是告诉 macOS“先别睡”的请求。打开“终端”,输入:
caffeinate不加任何参数时,它会阻止闲置休眠,直到你按下 Control-C。常用参数如下:
| 参数 | 作用 |
|---|---|
-i | 阻止闲置导致的系统休眠(不加参数时的默认行为) |
-d | 阻止显示器休眠 |
-m | 阻止磁盘闲置休眠 |
-s | 阻止系统休眠,仅在接通电源时有效 |
-u | 声明用户处于活动状态并点亮显示器(默认 5 秒超时) |
-t 600 | 600 秒后自动解除 |
-w 1234 | 一直保持到 PID 为 1234 的进程退出 |
最实用的用法是在后面直接跟一条命令。caffeinate 会运行这条命令,并且只在它运行期间保持唤醒:
caffeinate -i rsync -a ~/Projects /Volumes/Backup/
caffeinate -i -t 7200 # 保持两小时,之后恢复正常
caffeinate -d -i # 连屏幕也保持常亮,比如用来挂监控面板缺点是必须开着一个终端窗口,而且很容易忘了后台某个标签页里还有一个 caffeinate 在跑。
方法二:菜单栏开关
如果你更喜欢点一下而不是敲命令,菜单栏应用可以把同样的电源断言做成一个开关。StayAwake 是我们做的免费小工具:点一下月亮图标,勾选 Prevent Sleep,图标上就会多一道斜线,表示休眠已被暂停。取消勾选或退出应用,macOS 就恢复正常。
它在底层向 macOS 申请的正是 caffeinate -i 所用的 PreventUserIdleSystemSleep 断言:下载照常进行,显示器仍会按时变暗、熄屏。它不修改任何系统设置,也不需要管理员密码。
方法三:修改系统设置
“系统设置”里可以调整显示器何时关闭,很多 Mac 上还有一个“显示器关闭时防止自动进入睡眠”之类的开关。不同机型和 macOS 版本里它们的名称和位置不太一样,最快的办法是在“系统设置”里搜索“睡眠”。
如果是一台需要一直开着的 Mac,比如当家庭服务器用的 Mac mini,改系统设置最合适。但只是为了下载一次文件就没必要了:这是永久性改动,用完还得记得改回来。
查看是谁在阻止 Mac 休眠
想确认断言是否生效,或者想知道 Mac 为什么睡不着?运行:
pmset -g assertions在顶部汇总里找 PreventUserIdleSystemSleep,下面的列表会列出每个断言属于哪个进程。开启 StayAwake 后,你会看到类似这样的一行:
pid 4321(StayAwake): [0x…] 00:05:12 PreventUserIdleSystemSleep named: "StayAwake is enabled by the user."音频应用、视频播放和备份也会持有断言,这往往就是 Mac 该睡却不睡的原因。
这些方法都挡不住的情况
caffeinate -i 和 StayAwake 只阻止因闲置导致的休眠。合上 MacBook 屏幕、在苹果菜单中选择“睡眠”,或者电量极低时,Mac 仍然会进入睡眠。
该选哪一种?
- 写脚本或只跑一个长任务:用
caffeinate -i 你的命令。 - 白天需要随时开关:用菜单栏开关,比如 StayAwake。
- 一台永远不该睡的 Mac:改系统设置。