
複数の引数を取るスクリプトがあり、このスクリプトを AWS 上の複数のインスタンスで並行して実行する必要があります。たとえば、簡単にするために、AWS に 3 つのインスタンスがある場合、次を実行します。
On instance-a: script.sh a b
On instance-b: script.sh s t
On instance-c: script.sh y z
ランタイム (MATLAB) とプログラム (ランタイムを使用) がイメージの一部としてインストールされる AMI を使用してインスタンスを生成します。
確認していたこれリンクを見て、Capistrano について言及されているのを見ました。私のケースでは機能するでしょうか? 他に検討できる軽量な代替手段はありますか? ちなみに、各インスタンスから生成された戻りステータスと出力 (CSV ファイル) が必要になります。
答え1
3 つだけ必要な場合は、これが機能します (--results my.csv
機能するにはバージョン >= 20161222 が必要です)。
parallel --results my.csv ssh {1} script.sh {2} {3} ::: instance-a instance-b instance-c :::+ a s y :::+ b t z
しかし、推測してみましょう: というファイルにさらに多くのインスタンスがリストされていますhosts.txt
:
instance-a
instance-b
instance-c
どのインスタンスがどのジョブを実行するかは気にする必要はありません。インスタンスは単なるワーカーです。次のような .tsv ファイルがありますinput.tsv
。
a[tab]b
s[tab]t
y[tab]z
次に、次のコマンドを実行します。
parallel --slf hosts.txt --results my.csv -a input.tsv --colsep '\t' script.sh
コマンドが0
成功を返す場合、安価なスポット市場サーバーでも実行できます。 を使用すると、--retries 5
1 つのサーバーが故障した場合 (つまり、 を返さない場合)、GNU Parallel に別のサーバーでジョブを再実行するように要求できます0
。