如何运行多个 shell 脚本,但如果其中一个遇到错误/未成功终止则终止所有脚本?

如何运行多个 shell 脚本,但如果其中一个遇到错误/未成功终止则终止所有脚本?

我有一个 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 命令。

相关内容