我有一个 shell 脚本,可以并行运行其他几个 shell 脚本,例如./run_all.sh
包含
./run1.sh &
./run2.sh &
./run3.sh &
wait
echo "All 3 complete"
如果某个进程由于错误等原因退出,我该如何终止所有进程?&&
要求每个脚本成功终止,但它按顺序运行。
答案1
你可以尝试这样的方法:
{ run1.sh || killtheothers.sh 1 ; } &
{ run2.sh || killtheothers.sh 2 ; } &
{ run3.sh || killtheothers.sh 3 ; } &
这样每个命令都在后台运行(通过&
),但如果任何命令失败(返回错误,即非零状态),则“或”控制运算符||
允许“killtheothers.sh”脚本运行。您必须编写 killtheothers.sh,也许使用“killall”命令。我使用参数来指定脚本不需要终止哪个 runX 命令。