如何检查在循环后台多进程的退出状态?(How can I check the exit status

2019-09-26 14:28发布

我有在后台脚本中的循环

while read host
do
./script &
done
wait  #waits till all the background processes are finished

但我想检查proceess的退出状态如何,我会做到这一点

while read host
do
./script &
wait $! || let "FAIL+=1"
done
wait
echo $fail

但是,将上面的代码执行平行,因为时间是一个重要因素我,所以我想为所有主机并行执行。

这是可以知道哪个进程失败,这样我可以做

   echo "these are the list of process ids in background that failed"
   12346
   43561
   .....

而没有任何限制,可以在后台运行并行proceses的数量。 是安全的在上述循环中运行约20平行proceses

Answer 1:

您可以添加到您的脚本的末尾:

RC=$?
test $RC -eq 0 || echo "$$ failed"
exit $RC

$$返回壳的PID。 你转到后台脚本将在自己的分离的外壳运行。

exit $RC线显然是可选的。



文章来源: How can I check the exit status of multiple processes in background in loop?