使用macOS caffeinate命令防止MacBook进入睡眠状态

开始之前

我曾经把 Claude Code 跑起来后就离开了座位。回来后发现 MacBook 进入了睡眠模式,导致工作停止了。终端里跑着东西,MacBook 却自己关机的问题,可以用 macOS 的一个基本命令来解决。

1. 什么是 caffeinate

caffeinatemacOS 内置的命令。无需单独安装。顾名思义,就是给 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

从现在开始,只需输入 claudeClaude Code 就会在 caffeinate 状态下运行。无需再操心。

如果想在没有 caffeinate 的情况下纯粹运行 claude,可以使用 command 关键字。

# 忽略 alias 并运行原始 claude
command claude

感想

虽然是小事,但如果不知道,会让人很烦恼。特别是像 Claude Code 这样 与 AI 对话并长时间运行任务的情况,如果 MacBook 中途进入睡眠状态导致会话中断,会让人很慌张。了解 caffeinate 可以完全避免这种情况。如果注册了 alias,甚至可以忘记它的存在。

发表评论