複数のスクリプトを実行し、各スクリプトが完了するまで続けます。

複数のスクリプトを実行し、各スクリプトが完了するまで続けます。

私の質問は同時に複数のスクリプトを実行できますか? 32個のCPUを持つクラスタにアクセスできますが、同時に900個のスクリプトがあります。今私が望むのは、各スクリプトをキューに入れ、1つのスクリプトが完了したら別のスクリプトを起動することです。私はすべて(またはほぼすべての)CPUを並列に実行したいので、単純なループを実行したくありません。

ベストアンサー1

似たようなものを探しているようです。GNUパラレルユーティリティ。以下はその説明から抜粋したものです。

各入力行に対して、GNU Parallel はその行を引数として使用してコマンドを実行します。コマンドが与えられない場合、入力された行が実行されます。複数の行が並列に実行されます。

あなたの場合、次のように同時スクリプトを32個に制限できます。

parallel -j32 ::: ./script1 ./script2 (...) ./script900

または、parallelファイルからスクリプト名を読み取るか、すべての実行が同じスクリプトのインスタンスである場合は、入力ファイルにパラメータを保存できます。可能なさまざまなバリエーションのドキュメントをお読みください。

おすすめ記事