macOS 内置命令 —— 阻止系统进入睡眠,支持按时长、进程、断言类型精细控制。

为什么值得关注

macOS 默认会在空闲一段时间后自动睡眠,导致长时间任务(编译、下载、脚本)被中断。caffeinate 是系统内置工具,无需安装,可精确控制睡眠行为,比修改系统偏好设置更灵活、可脚本化。

语法

caffeinate [-dimsut] [-t timeout] [-w pid] [utility arguments...]

选项

选项说明
-d阻止显示器进入睡眠
-i阻止系统空闲睡眠(默认行为)
-m阻止磁盘空闲睡眠
-s阻止系统睡眠(仅 AC 电源有效)
-u声明用户活跃,若显示器关闭则唤醒;默认 5 秒超时
-t <秒>指定断言持续时长(秒),超时后自动释放
-w <pid>等待指定进程退出后自动释放断言

常用示例

# 无限期阻止空闲睡眠(Ctrl+C 退出)
caffeinate
 
# 阻止睡眠 1 小时
caffeinate -t 3600
 
# 运行命令期间阻止空闲睡眠
caffeinate -i make
 
# 阻止显示器和系统同时睡眠
caffeinate -ds
 
# 等待某个进程结束后释放
caffeinate -w 12345
 
# 阻止睡眠直到后台任务完成
caffeinate -i long_script.sh &

工作原理

caffeinate 通过向 IOPMLib 注册**电源管理断言(Power Management Assertion)**来阻止睡眠。断言在以下情况自动释放:

  • caffeinate 进程退出(Ctrl+C)
  • -t 超时到期
  • -w 监听的进程退出

适用场景

  • 长时间编译、测试、数据处理
  • 下载大文件或同步数据
  • 演示/展示时防止屏幕熄灭
  • CI/CD 脚本中防止构建机睡眠

局限性

  • -s(阻止系统睡眠)仅在接 AC 电源时有效,电池模式无效
  • -u 不指定 -t 时默认只持续 5 秒
  • 不影响手动触发的睡眠(如合上盖子)

位置

/usr/bin/caffeinate

相关命令

  • pmset — 更底层的电源管理配置工具