让任务在终端关闭后继续运行:nohup 与 disown
避免退出 shell 时的 SIGHUP 杀掉后台进程——一次性任务无需编写 systemd 服务。
执行 nohup ./long-job.sh > job.log 2>&1 & 启动对挂断免疫的任务;对已启动的后台任务执行 disown -h %1 也能保护它。
01命令
命令
$ nohup ./long-job.sh > job.log 2>&1 &
disown -h %102作用说明
终端关闭时 shell 会向其任务发送 SIGHUP——这就是“合上笔记本训练脚本就挂了”的经典原因。nohup 会忽略该信号并把输出重定向到即将消失的 tty 之外,& 则把任务放入后台。disown -h %1 将任务从 shell 的任务表中移除(或用 -h 仅标记为不挂断),可以抢救已经启动但没用 nohup 的进程。
03风险
!注意: nohup 只能屏蔽 SIGHUP:重启仍会杀掉进程。任何需要自动重启的任务应改用 systemd 服务。
04撤销
✓无需撤销——该命令不会改变持久状态。
05来源
- nohup(1) — Linux manual page依据: nohup man page: 'run a command immune to hangups, with output to a non-tty' — SIGHUP immunity documented.
最后验证: 2026-09-17 · 分类: 开发者