锁屏 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>
或者直接关闭运行它的终端窗口。
实现「屏幕黑了,但后台还在跑」
这是许多用户最关心的目标——屏幕不亮、节省电量,但任务仍在继续。
关键区别在于:
- 显示器关闭:系统仍然唤醒,只是屏幕灭了。
- 系统睡眠:整个系统挂起,所有任务暂停。
所以正确的做法是:
- 终端运行
caffeinate -disu &保持系统唤醒。 - 在系统设置中将「显示器关闭」时间设短,让屏幕自动熄灭。
- 注意:如果是 MacBook,合盖通常会触发睡眠。如需要合盖运行,需外接显示器并使用特定模式。
这样就实现了「屏幕不亮,但后台一直算」的理想状态。
进阶:与 tmux 配合
对于更复杂的长时间任务,可以考虑将 caffeinate 与 tmux 配合使用——tmux 负责保持终端会话不丢失,caffeinate 负责防止系统睡眠。两者结合,即使网络断开或终端意外关闭,会话也能恢复。
最省事的实操方案
如果你只是想「睡前启动 Claude Code,安心睡觉,醒来查看结果」,直接复制以下步骤:
- 打开终端
- 输入:
caffeinate -disu &
- 在该终端或新标签页中启动 Claude Code
- 让屏幕自动熄灭(或手动调暗)
- 第二天早上回来,如需停止 caffeinate,执行
kill对应进程即可
如果你更保守一点,只想临时防止睡眠几个小时,可以用:
caffeinate -t 14400 &
这样 4 小时后自动恢复,无需手动干预。