系统学习 macOS 学习路径:从 BSD 文件命令到系统、网络与开发维护

caffeinate

临时阻止 Mac 进入空闲睡眠,可包裹命令或在后台定时保持唤醒。

补充说明

caffeinate 通过持有电源断言阻止睡眠:-d 阻止显示器休眠,-i 阻止空闲系统睡眠,-m 阻止磁盘休眠,-s 在接电源时阻止系统睡眠,-u 声明用户活动,-t 指定持续秒数,-w 等待指定 PID 结束后退出。它只影响电源管理,不改变系统设置,进程退出后断言自动释放。

边界:合盖仍然会睡(除非外接电源和显示器,或用 pmset 的 disablesleep);它不会绕过锁屏、密码或 MDM 策略。-s 只在电源适配器供电时有效,电池模式下不会阻止睡眠。需要长期生效应改 pmset 或用 LaunchAgent,而不是留一个终端窗口。

常用示例

# 1. 一小时内不让显示器、系统和磁盘休眠
% caffeinate -dimsu -t 3600

# 2. 包裹一条命令,命令结束自动退出
% caffeinate -i make -j8

# 3. 等某个进程结束前保持不休眠,适合大文件传输
% caffeinate -i -w "$(pgrep -x rsync)"

# 4. 模拟一次用户活动,仅保持几秒(常用于唤醒显示器)
% caffeinate -u -t 5

# 5. 后台保持唤醒,记录 PID 便于收尾
% caffeinate -d & echo $! > /tmp/caffeinate.pid

# 6. 验证当前有哪些电源断言在阻止睡眠
% pmset -g assertions | grep -i caffeinate

易错点与排错

相关命令

参考链接

读完自测

合上页面,先回答,再展开对照。

  1. caffeinate -d、-i、-s 分别阻止什么?为什么 -s 在电池模式下可能无效?
  2. 为什么关掉终端后 Mac 又睡了?怎样让保持唤醒在后台持续?
  3. 合盖后仍然睡眠,caffeinate 能解决吗?还需要哪些条件?
答案
  1. -d 阻止显示器休眠,-i 阻止空闲系统睡眠,-s 在接电源时阻止系统睡眠;电池模式下 -s 不生效。
  2. 终端关闭会终止 caffeinate,断言释放;用 nohup、后台进程记录 PID,或用 LaunchAgent 管理。
  3. 不能单独解决;合盖睡眠由硬件策略决定,通常需要外接电源和显示器,或临时用 pmset disablesleep(有散热风险)。
微信小程序码:扫码打开命令速查小程序

小程序版

微信扫码,随时查命令