2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Justで並行して複数コマンドを実行する方法

Posted at

Justを使用して、並行して複数のコマンドを実行する方法を解説します。下記のサンプルコードを軸にステップバイステップで説明していきます。

justfile
dev:
  #!/bin/bash -eux
  cmd1 &
  cmd2 &
  trap 'kill $(jobs -pr)' EXIT
  wait

ステップ1: スクリプトの宣言

#!/bin/bash -eux

この行は、スクリプトを実行するシェルを指定しています。-euxオプションは以下の意味を持ちます。

  • -e: 途中でエラーが発生した場合、スクリプトを終了します。
  • -u: 未定義の変数を参照した場合、スクリプトを終了します。
  • -x: 実行するコマンドを表示します。デバッグに便利です。

ステップ2: コマンドをバックグラウンドで実行

cmd1 &
cmd2 &

&をコマンドの後ろにつけることで、コマンドをバックグラウンドで実行できます。これにより、cmd1cmd2が同時に実行されます。

ステップ3: スクリプト終了時にバックグラウンドのコマンドを終了する

trap 'kill $(jobs -pr)' EXIT

trapコマンドは、指定されたシグナルが発生したときに実行するコマンドを設定します。ここでは、EXITシグナルが発生したときに、kill $(jobs -pr)を実行します。jobs -prは、現在のシェルで実行中のバックグラウンドプロセスのプロセスIDを一覧表示するコマンドです。このスクリプトでは、cmd1cmd2のプロセスIDがリストされます。

ステップ4: バックグラウンドのコマンドが終了するのを待つ

wait

waitコマンドは、バックグラウンドで実行中のすべてのコマンドが終了するのを待ちます。これにより、cmd1cmd2が並行実行され、両方が終了するまでスクリプトが終了しなくなります。

このように、Justを使用してシンプルなスクリプトで複数のコマンドを並行して実行する方法を説明しました。これを活用して、効率良くタスクを実行しましょう。

今回の投稿では、Justを使用して並行して複数のコマンドを実行する方法を解説しました。これを応用して、開発や運用作業を効率化することができます。Justは柔軟なツールであり、他にも様々な使い方がありますので、ぜひチャレンジしてみてください。

参考になれば幸いです。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?