次のSGEクラスタで3つのコマンドを並列に実行しようとしています。
cmds=("prog 1 2 3" "prog 4 5 6" "prog 7 8 9")
for cmd in "${cmds[@]}"
do
sem -j 3 $cmd
done
sem --wait
したがって、私のコマンドは正常に実行され、完了します。これは生成された出力ログから推論でき、そのコマンドがノードで実行されなくなったことがわかります。ただし、qsub sem --waitを使用して送信すると、無期限に待機します。またはインタラクティブモードで実行し、a。手動でコマンドを入力し、b.どちらの方法も正常に完了します。 semの実行に私が見逃したことはありますか?
助けてくれてありがとう。
答え1
各コマンドを順番に実行します。スクリプトが到着すると、3つのsem --wait
コマンドがすべて実行され、完了しました。
&
行sem -j 3 $cmd
に1つを追加してみてください。これにより、バックグラウンドで各コマンドが並列に実行されます。
cmds=("prog 1 2 3" "prog 4 5 6" "prog 7 8 9")
for cmd in "${cmds[@]}"
do
sem -j 3 $cmd &
done
sem --wait