You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何串联nohup命令使其按顺序依次执行?

解决顺序执行nohup命令的问题

你的问题出在命令的组合方式上:用&&连接的nohup命令,只有当前命令执行完成且退出状态为0时才会执行下一个;如果第一个命令退出状态非0,后续命令会直接被跳过。另外最后一个&只是把整个命令序列放到后台,并没有解决顺序执行的核心问题。

以下两种方法可以实现严格的顺序执行:

方法一:用单个nohup包裹命令序列

把所有要执行的命令打包成一个shell命令串,用bash -c执行,再用一个nohup把整个串后台运行,这样命令会按顺序依次执行:

nohup bash -c '
python3 foo.py 0 &> nohup-0-foo.out
python3 foo.py 1 &> nohup-1-foo.out
python3 foo.py 2 &> nohup-2-foo.out
python3 foo.py 3 &> nohup-3-foo.out
python3 foo.py 4 &> nohup-4-foo.out
' &

如果要求前一个命令执行成功才继续执行下一个,把换行替换成&&即可:

nohup bash -c '
python3 foo.py 0 &> nohup-0-foo.out &&
python3 foo.py 1 &> nohup-1-foo.out &&
python3 foo.py 2 &> nohup-2-foo.out &&
python3 foo.py 3 &> nohup-3-foo.out &&
python3 foo.py 4 &> nohup-4-foo.out
' &

方法二:逐个后台运行并等待完成

给每个nohup命令加&让它后台运行,然后用wait $!等待上一个进程完全结束后再执行下一个:

nohup python3 foo.py 0 &> nohup-0-foo.out &
wait $!
nohup python3 foo.py 1 &> nohup-1-foo.out &
wait $!
nohup python3 foo.py 2 &> nohup-2-foo.out &
wait $!
nohup python3 foo.py 3 &> nohup-3-foo.out &
wait $!
nohup python3 foo.py 4 &> nohup-4-foo.out &

这里$!代表上一个后台进程的PID,wait $!会阻塞到该进程结束,确保严格的执行顺序。

内容的提问来源于stack exchange,提问作者Bob van Luijt

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 23:45:37