この並列コマンドはどのホストにかかっていますか?

この並列コマンドはどのホストにかかっていますか?

次の並列コマンドを実行します。

parallel -q -j0 ssh {} 'echo {}; tmp/myscript' ::: host1 host2 host3 ....

上記の行には、ほとんどのホストの結果が表示されます。

残念ながら、一部のホストでは並列コマンドが中断されます。スクリプトが無限ループに陥ったようです。

どのホストにかかっているのか、どうすればわかりますか?

すべてのホストにアクセス可能です。私はこれを次のコマンドでテストしました。

parallel -q -j0 ssh {} 'echo {}; date' ::: host1 host2 host3 ....

答え1

以下を使用します--timeout 1000%。ジョブが通常の実行時間より10倍長くなると、そのジョブを終了します。

--joblog mylog次に、どのタスクがタイムアウトしたかを確認するために使用します(exit val = -1)。

また--nonall、(代わりに-q ssh)とを使用して、--tagどのタスクが完了したかを確認し、どのタスクが中断されたかを推測することもできます。

答え2

コマンドを使用して確認できますps

スクリプトを再実行し、中止されるのを待ってから、次を実行します。

ps -elf | grep ssh

sshノードのプロセスが「停止」していることがわかります。

答え3

並列性のないソリューションを見つけました。

私が運営する

for host in host1 host2 ...; do echo $host; ssh $host tmp/myscript; echo; done

そうすればどこにかかっているのか分かります。

関連情報