我运行这个并行命令:
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
这样我就可以看到它挂在哪里。