1

我在后台有一个带有脚本的循环

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 个并行进程是否安全

4

1 回答 1

1

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

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

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

exit $RC行显然是可选的。

于 2013-06-26T07:20:52.017 回答