概要
waitは「待つ」という意味の通り、シェルスクリプトでバックグラウンドで実行されたジョブが終了するまでシェルの実行を中断させます。通常、`&`記号を使用して複数のジョブをバックグラウンドで並行して実行した後、これらのジョブがすべて完了した後に次の処理に進む必要がある場合に使用されます。`wait`を使用すると、スクリプトがバックグラウンドプロセスの終了コードを確認できるため、ジョブの成功可否を判断するのにも役立ちます。
主な特徴
waitコマンドの主な特徴は以下の通りです。
- 特定のバックグラウンドジョブの終了を待機します。
- ジョブ番号(job number)またはプロセスID(PID)を引数として指定できます。
- 引数なしで実行すると、すべてのバックグラウンドジョブが終了するまで待機します。
- シェルスクリプトで複数の並行ジョブを同期するのに役立ちます。
主なオプション
waitコマンドは引数としてジョブ番号やPIDを受け取り、オプションがほとんどないシンプルなコマンドです。
1) 실행 옵션
2) 도움말
生成されたコマンド:
コマンドを組み合わせてみてください。
説明:
`wait` コマンドを実行します。
これらのオプションを組み合わせて、AIと一緒に仮想的にコマンドを実行してみてください。
使用例
waitコマンドの様々な使用例を通じて機能を習得しましょう。
すべてのバックグラウンドジョブを待機
sleep 5 &
sleep 10 &
jobs
wait
echo 'すべてのジョブが完了しました。'
複数の`sleep`ジョブをバックグラウンドで実行した後、`wait`コマンドですべてのジョブが終了するまで待機します。
特定のジョブを待機
sleep 10 &
sleep 5 &
jobs
wait %1
echo '1番のジョブが完了しました。'
2つのジョブのうち、1番のジョブが終了するまで待機します。`jobs`コマンドでジョブ番号を確認し、`wait %1`を使用します。
プロセスID(PID)で待機
sleep 10 &
PID=$!
echo "PID $PID のジョブが開始されました。"
wait $PID
echo "PID $PID のジョブが完了しました。"
スクリプトで`$`を使用してバックグラウンドプロセスのPIDを変数に保存した後、そのPIDが終了するまで待機します。
インストール
waitはシェル(bash、zshなど)の組み込みコマンドであるため、別途インストールする必要はありません。
ヒントと注意事項
waitコマンド使用時の注意点をまとめました。
ヒント
- `wait`は、バックグラウンドプロセスが終了するまでシェルの実行を停止します。プロセスが終了しない場合、シェルは待ち続けます。
- `wait`コマンドの終了ステータスコードは、待機したプロセスの終了ステータスコードと同じです。これにより、スクリプトでジョブの成功可否を確認できます。
- ジョブ番号(`%1`)を使用するには、まず`jobs`コマンドで現在のシェルのバックグラウンドジョブを確認する必要があります。`$!`は、最も最近バックグラウンドで実行されたプロセスのPIDを格納する特殊変数です。