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— 更底层的电源管理配置工具