在后台运行有很多三个进程(proc1~3.sh)。当其中一个程序退出错误时,我想退出/停止所有这些程序。这是我的简单方法,但它仍然存在以下问题:
示例脚本是:
#!/bin/bash
set -e
proc1.sh &
pid1=$!
proc2.sh &
pid2=$!
proc3.sh &
pid3=$!
if ! wait $pid1 ; then
echo "Err: proc1 stopped"
exit 1
fi
if ! wait $pid2 ; then
echo "Err: proc2 stopped"
exit 1
fi
if ! wait $pid3 ; then
echo "Err: proc3 stopped"
exit 1
fi
答案 0 :(得分:3)
解决方案是使用Math.round()
GNU parallel
parallel -j3 --halt 2 bash ::: proc[1-3].sh
并行运行3个作业-j3
在第一个作业失败并退出剩余正在运行的作业时退出