首页/系统/信创系统运维速查/后台任务:nohup 与作业控制
服务与运维65 条

后台任务:nohup 与作业控制

临时长任务用 nohup 或 setsid 脱离终端并重定向输出,jobs/fg/bg 管理当前会话作业;正式任务建议注册 systemd 服务或 systemd-run 托管。

信创系统运维速查系统更新于 2026-10-13

后台任务怎么做

把长任务放到后台并扛住终端断开,最朴素的组合是 nohup 加重定向再加后台符号,或者用 setsid 脱离会话;jobs、fg、bg 管理当前 shell 里的作业。它们只解决不被挂断的问题,不提供崩溃重启与日志管理能力。正式任务应当注册成 systemd 服务或用 systemd-run 托管,适用于所有 Linux 发行版。

基本信息

后台执行命令 &
抗挂断nohup 命令 > 日志 2>&1 &
脱离会话setsid 命令 > 日志 2>&1 &
作业管理jobs -l、fg %1、bg %1、disown
正式托管systemd 服务或 systemd-run

典型使用场景

  • 数据迁移、批量导入等跑数小时的任务,不能占着终端
  • 临时压测或巡检脚本后台跑,同时继续做别的排查
  • 远程会话不稳定,需要任务在断线后继续执行
  • 把前台阻塞的命令挪到后台,腾出终端做别的事
  • 用 systemd-run 起一个受 systemd 管理的临时任务

示例

示例
nohup /opt/scripts/import.sh > /var/log/import.log 2>&1 &   # 后台跑并落日志
echo $! > /run/import.pid                                   # 记下 PID 便于管理
jobs -l                                                     # 列出当前 shell 作业
fg %1                                                       # 拉回前台观察
bg %1                                                       # 再放回后台
disown -h %1                                                # 忽略挂断信号
tail -f /var/log/import.log                                 # 跟踪进度
ps -p $(cat /run/import.pid) -o pid,etime,cmd               # 确认仍在运行

手段对比

手段抗终端断开崩溃重启适用场景
命令 &否否几秒到几分钟的小任务
nohup 加后台是否临时长任务
setsid 加后台是否需要完全脱离会话
systemd 服务是可配置正式业务与守护进程
systemd-run是可选临时任务且要统一日志
nohup 只挡挂断信号,不具备守护与拉起能力;关键任务要用 systemd 服务托管,崩溃可自动拉起,日志进 journal 可查。

相关信号对照

信号编号含义
SIGHUP1终端断开时发送,nohup 会忽略它
SIGTERM15默认的优雅终止信号
SIGKILL9强制终止,进程无法捕获
SIGSTOP19暂停进程,需要继续信号恢复
想临时托管一个任务又不想写单元文件,可以用 systemd-run --unit=batch-job /opt/scripts/job.sh,日志直接进 journal,用 journalctl -u batch-job 查看。

易错点

  • 用命令加后台符号直接放后台:关掉终端即被挂断,长任务先 nohup 或 setsid
  • 不重定向输出:写满终端缓冲会阻塞进程,长任务务必把标准输出与标准错误落文件
  • 同一任务重复拉起导致数据重复写入,用 pid 文件或 flock 做互斥
  • 以为后台任务会开机自启:nohup 与作业控制只管当前会话,自启要写 systemd 单元或用计划任务的启动项
  • 用 kill 结束后台任务时不看进程是否真的退出:优雅信号被忽略时会残留,确认状态后再决定是否强制终止

数据来源与参考

  • man 1 nohup
  • man 1 bash(作业控制)
  • man 1 systemd-run
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌