• macOS
  • 教程
  • 终端

如何让 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 600600 秒后自动解除
-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:改系统设置。

来自博客

继续阅读

全部文章