开始之前
我曾经把 Claude Code 跑起来后就离开了座位。回来后发现 MacBook 进入了睡眠模式,导致工作停止了。终端里跑着东西,MacBook 却自己关机的问题,可以用 macOS 的一个基本命令来解决。
1. 什么是 caffeinate
caffeinate 是 macOS 内置的命令。无需单独安装。顾名思义,就是给 MacBook 喂咖啡,让它保持清醒,不进入睡眠状态。
虽然也可以在系统设置中更改为“永不睡眠”,但那样每次都需要改回来。caffeinate 可以在 需要的瞬间 防止睡眠,并在任务完成后自动恢复原状。
2. 基本用法 — 新运行时
要从开始终端任务时就防止睡眠,只需在 caffeinate 后面加上要执行的命令即可。
caffeinate -dims claude
这样,在 Claude Code 运行期间,MacBook 绝对不会进入睡眠状态。关闭 Claude Code 时,caffeinate 也会自动一起关闭。
你可能想知道 -dims 是什么,它们是防止不同类型睡眠的标志。
| 标志 | 含义 | 说明 |
|---|---|---|
-d |
display | 防止显示器睡眠 (防止屏幕关闭) |
-i |
idle | 防止系统空闲睡眠 (即使没有输入也不会睡眠) |
-m |
disk | 防止磁盘睡眠 |
-s |
system | 防止系统睡眠 (连接电源时) |
如果可以接受屏幕关闭,只要工作不停止,只使用 -i 就足够了。
caffeinate -i claude
3. 应用于已运行的进程
有时,在已经运行 Claude Code 的状态下,会想到“啊,忘了用 caffeinate 了”。这时,可以 打开另一个终端标签页,并使用 -w 标志。
# 在另一个终端标签页中运行
caffeinate -dims -w $(pgrep -ox "claude")
-w 用于 在特定进程 ID (PID) 存在期间 防止睡眠。pgrep -ox "claude" 用于查找当前正在运行的 claude 进程的 PID。
如果 pgrep 找到多个进程并导致错误,则只需使用 -o 标志即可。(仅选择最老的父进程)
caffeinate -dims -w $(pgrep -o "claude")
4. 指定时间使用
如果只想在特定时间内防止睡眠,可以使用 -t 标志指定时间,单位为 秒。
# 防止睡眠 2 小时 (7200 秒)
caffeinate -dims -t 7200
5. 实际应用示例
除了 Claude Code 之外,所有在终端中需要长时间运行的任务都可以使用。
# 大容量构建
caffeinate -i ./gradlew assembleRelease
# 下载大文件
caffeinate -i wget https://example.com/big-file.zip
# npm 安装 + 构建
caffeinate -i bash -c "npm install && npm run build"
# 运行服务器
caffeinate -dims node server.js
核心很简单。“在耗时长的命令前面加上 caffeinate -i。” 记住这一点即可。
6. 注意事项
- 即使使用了
caffeinate,合上 MacBook 盖子也会进入睡眠状态 (clamshell mode)。如果想在合上盖子的情况下使用,则需要连接外部显示器 + 电源 + 键盘/鼠标。 - 在电池模式下,
-s标志 无效。使用电池时,请使用-i标志。 - 要结束
caffeinate,请在该终端中按 Ctrl+C。
7. 注册 alias — 每次输入太麻烦时
每次都输入 caffeinate -dims claude 很麻烦。注册 alias 后,只需输入 claude 即可自动应用 caffeinate。
在 ~/.zshrc (使用 bash 的人是 ~/.bashrc) 中添加以下行。
# 添加到 ~/.zshrc
alias claude='caffeinate -dims claude'
保存后,重新打开终端或运行 source ~/.zshrc 即可生效。
source ~/.zshrc
从现在开始,只需输入 claude,Claude Code 就会在 caffeinate 状态下运行。无需再操心。
如果想在没有 caffeinate 的情况下纯粹运行 claude,可以使用 command 关键字。
# 忽略 alias 并运行原始 claude
command claude
感想
虽然是小事,但如果不知道,会让人很烦恼。特别是像 Claude Code 这样 与 AI 对话并长时间运行任务的情况,如果 MacBook 中途进入睡眠状态导致会话中断,会让人很慌张。了解 caffeinate 可以完全避免这种情况。如果注册了 alias,甚至可以忘记它的存在。