複数のプロセスが終了するまで待機する・waitコマンド

シェルの組込みコマンドであるwaitコマンドを使用すると、バックグラウンドで起動したプロセスが終了するまで待機するようになります。
以下にwaitコマンドを使用した例を記します。
本資料では、CentOSを使用しシェルはbashを利用しました。


スポンサーリンク

関連記事

whichでみつからないwaitコマンド

waitコマンドはシェルの組込みコマンドなのでwhichでwaitコマンドのありかを探してもみつかりません。

$ which wait
/usr/bin/which: no wait in (/usr/lib/qt-3.3/bin:/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/home/sakura/bin)

waitコマンドを使用した簡単なシェルスクリプトで実験

親(parent.sh)と子のシェルスクリプト(child.sh)を2つ作成しました。
parent.shからchild.shを複数バックグラウンドで起動(&を付けてバックグランドで起動)しwaitでchild.shが終了するのwaitで待ちます。
バックグランドで動作していたchild.shが全て終了するとparent.shが終了メッセージを表示します。
以下に2つのシェルを記します。

waitコマンド動作確認用シェルスクリプト

以下にwatiコマンド動作確認用シェルスクリプトを記します。

waitコマンド動作確認用シェルスクリプトを動かしてみる

parent.shを起動すると以下のように出力されます。
出力結果だけを見るとwaitコマンドの動作がわからないのですが、以下の出力は3つのchild.shプロセスが1つ目の引数を表示したあと、1秒停止します。
2つ目の引数分、メッセージを表示しています。
3つのchild.shが終了したらscript is finishedが表示されます。

$ chmod +x parent.sh child.sh 
$ ./parent.sh 
sakura
tsubaki
suzuran
sakura
tsubaki
sakura
script is finished.

以上、シェルの組込みコマンドであるwaitコマンドについての記事でした。


スポンサーリンク


添付ファイル: filechild.sh 747件 [詳細] fileparent.sh 969件 [詳細]

トップ   編集 凍結 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2025-03-08 (土) 13:22:42