如何在后台循环中检查多个进程的退出状态?

时间:2013-04-16 08:18:05

标签: linux bash shell process

我在背景中有一个带有脚本的循环

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

但我想检查过程的退出状态我该怎么做

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
   .....

可以在后台运行的并行进程数是否有任何限制。 在上面的循环中运行大约20个并行过程是否安全

1 个答案:

答案 0 :(得分:1)

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

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

$$返回shell的PID。您的后台脚本将在各自独立的shell中运行。

exit $RC行显然是可选的。