Mac 上跑 Claude Code 如何防止睡眠?caffeinate 完全指南

June 24, 2026
Published in 技术教程

Abstract

很多 Mac 用户在使用 Claude Code 运行长任务时都会有这样一个疑问:锁屏之后,Claude Code 还能继续跑吗? 答案取决于你的 Mac 到底只是锁屏,还是进入了真正的睡眠状态。

Keywords: macOS, Claude Code, caffeinate, 终端, 防止睡眠

锁屏 vs 睡眠:关键区别

首先要搞清楚两个概念:

  • 锁屏:只是锁定屏幕和输入设备,系统仍然保持唤醒。此时 CPU 和后台任务会继续运行,Claude Code 一般不受影响。
  • 睡眠 / 合盖睡眠:CPU 和大多数后台任务会被暂停。Claude Code 的终端会话也会被中断或挂起。
  • 远程会话:如果你使用的是 Claude Code 的远程会话模式,即使关闭本地电脑,任务仍可在云端继续执行。

如果你希望 Claude Code 在无人值守时继续运行,核心思路就是:让 Mac 保持唤醒,同时允许屏幕熄灭

认识 caffeinate

caffeinate 是 macOS 自带的命令行工具,作用是防止系统进入睡眠状态。它不需要安装任何第三方软件,打开终端就能直接用。

最简单的用法:

caffeinate

执行后,终端看起来像"卡住"了——其实它正在后台运行,持续阻止系统睡眠。按 Ctrl + C 即可停止。

常用用法

1. 无限保持唤醒

caffeinate

一直运行,直到你手动按 Ctrl + C 停止。

2. 定时唤醒

caffeinate -t 3600

-t 后面跟秒数,上例表示保持唤醒 1 小时。

3. 陪伴某个命令运行

caffeinate -i <你的命令>

例如:

caffeinate -i claude

当该命令在运行时,系统会尽量阻止睡眠;命令结束后自动恢复正常的睡眠策略。

4. 后台运行(推荐)

默认情况下 caffeinate 会占据当前终端窗口。你可以把它放到后台,释放终端继续输入其他命令:

caffeinate -disu &

其中各参数含义:

  • -d:防止显示器睡眠
  • -i:防止系统空闲睡眠
  • -s:防止硬盘睡眠
  • -u:声明用户活跃

& 将进程放入后台,终端立即返回提示符。这种方式尤其适合「晚上睡觉前启动,第二天早上查看结果」的场景。

如何停止 caffeinate

如果 caffeinate 在前台运行,直接在终端窗口按 Ctrl + C 即可。

如果在后台运行,可以用以下方式查找并终止:

# 查找 caffeinate 进程
ps aux | grep caffeinate

# 根据 PID 终止
kill <PID>

或者直接关闭运行它的终端窗口。

实现「屏幕黑了,但后台还在跑」

这是许多用户最关心的目标——屏幕不亮、节省电量,但任务仍在继续。

关键区别在于:

  • 显示器关闭:系统仍然唤醒,只是屏幕灭了。
  • 系统睡眠:整个系统挂起,所有任务暂停。

所以正确的做法是:

  1. 终端运行 caffeinate -disu & 保持系统唤醒。
  2. 在系统设置中将「显示器关闭」时间设短,让屏幕自动熄灭。
  3. 注意:如果是 MacBook,合盖通常会触发睡眠。如需要合盖运行,需外接显示器并使用特定模式。

这样就实现了「屏幕不亮,但后台一直算」的理想状态。

进阶:与 tmux 配合

对于更复杂的长时间任务,可以考虑将 caffeinatetmux 配合使用——tmux 负责保持终端会话不丢失,caffeinate 负责防止系统睡眠。两者结合,即使网络断开或终端意外关闭,会话也能恢复。

最省事的实操方案

如果你只是想「睡前启动 Claude Code,安心睡觉,醒来查看结果」,直接复制以下步骤:

  1. 打开终端
  2. 输入:
caffeinate -disu &
  1. 在该终端或新标签页中启动 Claude Code
  2. 让屏幕自动熄灭(或手动调暗)
  3. 第二天早上回来,如需停止 caffeinate,执行 kill 对应进程即可

如果你更保守一点,只想临时防止睡眠几个小时,可以用:

caffeinate -t 14400 &

这样 4 小时后自动恢复,无需手动干预。