Justを使用して、並行して複数のコマンドを実行する方法を解説します。下記のサンプルコードを軸にステップバイステップで説明していきます。
dev:
#!/bin/bash -eux
cmd1 &
cmd2 &
trap 'kill $(jobs -pr)' EXIT
wait
ステップ1: スクリプトの宣言
#!/bin/bash -eux
この行は、スクリプトを実行するシェルを指定しています。-eux
オプションは以下の意味を持ちます。
-
-e
: 途中でエラーが発生した場合、スクリプトを終了します。 -
-u
: 未定義の変数を参照した場合、スクリプトを終了します。 -
-x
: 実行するコマンドを表示します。デバッグに便利です。
ステップ2: コマンドをバックグラウンドで実行
cmd1 &
cmd2 &
&
をコマンドの後ろにつけることで、コマンドをバックグラウンドで実行できます。これにより、cmd1
とcmd2
が同時に実行されます。
ステップ3: スクリプト終了時にバックグラウンドのコマンドを終了する
trap 'kill $(jobs -pr)' EXIT
trap
コマンドは、指定されたシグナルが発生したときに実行するコマンドを設定します。ここでは、EXIT
シグナルが発生したときに、kill $(jobs -pr)
を実行します。jobs -pr
は、現在のシェルで実行中のバックグラウンドプロセスのプロセスIDを一覧表示するコマンドです。このスクリプトでは、cmd1
とcmd2
のプロセスIDがリストされます。
ステップ4: バックグラウンドのコマンドが終了するのを待つ
wait
wait
コマンドは、バックグラウンドで実行中のすべてのコマンドが終了するのを待ちます。これにより、cmd1
とcmd2
が並行実行され、両方が終了するまでスクリプトが終了しなくなります。
このように、Justを使用してシンプルなスクリプトで複数のコマンドを並行して実行する方法を説明しました。これを活用して、効率良くタスクを実行しましょう。
今回の投稿では、Justを使用して並行して複数のコマンドを実行する方法を解説しました。これを応用して、開発や運用作業を効率化することができます。Justは柔軟なツールであり、他にも様々な使い方がありますので、ぜひチャレンジしてみてください。
参考になれば幸いです。