让任务在终端关闭后继续运行:nohup 与 disown

避免退出 shell 时的 SIGHUP 杀掉后台进程——一次性任务无需编写 systemd 服务。

Linuxnohup 后台运行后台后台任务disown 后台任务低风险
执行 nohup ./long-job.sh > job.log 2>&1 & 启动对挂断免疫的任务;对已启动的后台任务执行 disown -h %1 也能保护它。

01命令

命令
$ nohup ./long-job.sh > job.log 2>&1 &
disown -h %1

02作用说明

终端关闭时 shell 会向其任务发送 SIGHUP——这就是“合上笔记本训练脚本就挂了”的经典原因。nohup 会忽略该信号并把输出重定向到即将消失的 tty 之外,& 则把任务放入后台。disown -h %1 将任务从 shell 的任务表中移除(或用 -h 仅标记为不挂断),可以抢救已经启动但没用 nohup 的进程。

03风险

风险低风险
!注意: nohup 只能屏蔽 SIGHUP:重启仍会杀掉进程。任何需要自动重启的任务应改用 systemd 服务。

04撤销

✓无需撤销——该命令不会改变持久状态。

05来源

  • nohup(1) — Linux manual page
    man7.org · technical · 2026-09-17
    依据: nohup man page: 'run a command immune to hangups, with output to a non-tty' — SIGHUP immunity documented.

最后验证: 2026-09-17 · 分类: 开发者