在 macos 终端中让长时间任务后台持续运行,需组合使用 &、nohup、tmux/screen 和 caffeinate:& 适用于轻量后台;nohup + & 防终端断开中断;tmux/screen 实现会话持久化;caffeinate 阻止系统休眠导致中断。
在 macos 终端里让长时间任务后台运行,核心是避免它被终端关闭中断、防止系统休眠导致中断,并确保你离开后任务仍在持续执行。关键不在“多复杂”,而在选对方法——不同场景对应不同组合。
用 & 简单丢到后台(适合轻量、不交互的任务)
命令末尾加 &,立刻返回提示符,任务在后台启动:
-
python train.py &—— 启动后终端可继续输入其他命令 - 注意:如果终端关闭或 SSH 断开,该进程通常会被终止(收到 SIGHUP)
- 可用
jobs查看当前 shell 的后台作业,fg %1可拉回前台
用 nohup + & 确保断开后仍运行
nohup 会忽略挂起信号(SIGHUP),配合 & 实现真正“脱离终端”:
nohup python train.py > output.log 2>&1 &- 输出自动重定向到
nohup.out(或你指定的output.log) - 关掉终端、断开 SSH 都不影响它继续跑
- 进程仍受系统休眠影响——需配合
caffeinate使用
用 tmux 或 screen 实现会话持久化
它们创建独立的终端会话环境,即使网络断开、终端关闭,任务也稳稳运行:
- 新建会话:
tmux new -s model_train - 运行任务:
python train.py - 分离会话:
Ctrl+a d(前缀键默认Ctrl+b,可改) - 之后随时回来:
tmux attach -t model_train - 优势:支持多窗格、可查看实时输出、天然抗断连
防休眠:加上 caffeinate 才算真正“不掉线”
Mac 默认空闲几分钟就休眠,后台任务可能卡住或中断。必须加 caffeinate:
- 基础防休眠:
caffeinate -dimsu python train.py - 后台+防休眠组合:
nohup caffeinate -dimsu python train.py > log.txt 2>&1 & - 定时唤醒(比如跑1小时):
caffeinate -dimsu -t 3600 python train.py - 按
Ctrl+C可随时中止 caffeinate,系统立即恢复休眠策略
不需要装任何第三方工具,macOS 自带这些命令。挑一种组合用熟,下载大文件、训练模型、编译项目就再也不会被“睡醒发现停了”打断。











