这个并行命令挂在哪台主机上?

这个并行命令挂在哪台主机上?

我运行这个并行命令:

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

这样我就可以看到它挂在哪里。

相关内容