いくつかのコマンドを実行し、それらすべてが終了するのを待つシェル スクリプトを作成したいと考えています。
私がしなければならないことは、使用することだと思います
cmd1 &
cmd2 &
cmd3 &
....
等
しかし、私が知らないのは、それらが終了するのを待つ方法です。
何か案は?
いくつかのコマンドを実行し、それらすべてが終了するのを待つシェル スクリプトを作成したいと考えています。
私がしなければならないことは、使用することだと思います
cmd1 &
cmd2 &
cmd3 &
....
等
しかし、私が知らないのは、それらが終了するのを待つ方法です。
何か案は?
wait
引数なしでコマンドを使用するだけです:
cmd1 &
cmd2 &
cmd3 &
wait
これにより、bash はすべての未完成の子を待機させます。これは、続行する必要がある他のバックグラウンド タスクがない限り機能します。
この質問には、あなたの問題に対する答えがあります。:)
wait
コマンドを呼び出すことで、実行中のすべてのジョブを簡単に処理できwait
ます。
サブプロセスがコード!=0で終了するときに、いくつかのサブプロセスが終了して終了コード!=0を返すのをbashで待機する方法は?
この例はうまくいくようです。
[stou$ ~]$ (sleep 1 ; echo 1) & (sleep 4 ; echo 4) & (sleep 3 ; echo 3)& wait; echo done
[1] 13651
[2] 13652
[3] 13653
1
[1] Done ( sleep 1; echo 1 )
3
4
[2]- Done ( sleep 4; echo 4 )
[3]+ Done ( sleep 3; echo 3 )
done
[stou$ ~]$