防瞌睡
anti-sleep
Anti-Sleep (macOS caffeinate)
使用场景
- 当用户希望 Mac 在执行长时间监督任务期间保持唤醒时使用。
- 当构建、下载或自动化运行不应被睡眠中断时使用。
使用内置的 caffeinate 命令保持 Mac 唤醒,无需安装。
快速上手 — 标准命令
bash
caffeinate -d -i -t 7200 # 全功率:屏幕保持开启 + 禁止闲置睡眠,持续 2 小时时长参数为 -t <秒>:2小时 = 7200,7小时 = 25200,一夜(9小时) = 32400。
强度级别
| 标志 | 效果 |
|---|---|
| -i | 仅防止系统闲置睡眠(屏幕仍可能变暗/锁定) |
| -d | 防止显示器睡眠(屏幕保持开启) |
| -d -i | 默认选择 — 屏幕开启 + 系统唤醒 |
| -d -i -s | 增加 -s:即使在交流电电源语义下也防止睡眠;-s 仅在接通电源时有效 |
| -u -t 1 | 模拟用户活动 — 立即唤醒显示器 |
除非用户另有要求,否则默认使用 -d -i -t <seconds>。
绑定到进程而非定时器
bash
caffeinate -d -i -w <PID> # 直到该进程退出才唤醒(非常适合构建任务)
caffeinate -i npm run build # 包装一个命令;当命令结束时退出在可见终端中运行 (cmux 面板)
建议在用户自己的终端面板中运行,以便可见且易于通过 Ctrl+C 停止。在 cmux 中(如果涉及面板交互,请先阅读 cmux 技能):
bash
cmux send --surface surface:<N> "caffeinate -d -i -t 25200\n"否则将其作为后台 Bash 任务运行。切勿用它阻塞你自己的前台 Shell。
验证与监控
bash
pgrep -fl caffeinate # 是否在运行?显示具体标志
ps -o etime= -p <PID> # 已运行多长时间
pmset -g assertions | grep -i deny # 确认睡眠断言(assertions)是否激活注意: caffeinate 不会打印任何内容且会占用提示符 —— 看起来像“卡住了”或像没按回车一样。它并没有卡住。请通过 pgrep 验证,而不是观察终端。
过期: 使用 -t 时,时间到期后它会静默退出 —— 没有通知。如果用户在数小时后询问“是否还在运行?”,请先检查 pgrep;它可能已经过期。
键盘背光
caffeinate 无法保持键盘背光开启 —— 键盘背光有独立的闲置定时器,在 Apple Silicon 上没有 CLI/API(2026-07 研究结论)。解决方法是手动一次性设置:系统设置 > 键盘 > “在闲置多久后关闭键盘背光” > 从不。
提前停止
bash
pkill -f "caffeinate -d -i" # 或在运行它的面板中按 Ctrl+C启动后:向用户确认 PID、标志以及到期的时间点。
局限性
- 改编自
davidondrej/skills;在执行前请验证本地路径、工具、凭据和代理功能。
- 对于命令执行、远程访问、调度、浏览器自动化或文件修改工作流,请先获得用户的明确批准并确认目标环境。