ssh + ssh 卡在远程机器上

ssh + ssh is stuck on remote machine

用于在 Linux 机器上执行重启的简单脚本

for i in $LIST_OF_LINUX_MACHINES
do
   ssh $LINUX_MACHINE /var/tmp/restart.sh
done

在 运行 这个脚本几次之后,

有时ssh进程卡住! (并且循环卡在当前机器上)-

这怎么可能 - 在极少数情况下 ssh 卡住的原因可能是什么

以及如何避免这种情况?

我会建议一些完全不同的东西——而不是在实例之间有固定的延迟,一次固定最大数量的实例到 运行。例如,该值为 25:

numprocs=25
timeout=5
xargs -P "$numprocs" -J '{}' -n 1 -- \
  perl -e 'alarm shift; exec @ARGV' -- "$timeout" \
    ssh -nxaq -o ConnectTimeout=5 -o StrictHostKeyChecking=no '{}' /tmp/reboot.sh \
  <hostnames # if a file; use < <(awk ...) if a script providing per-line info

请注意,-J {} 是一个扩展,它避免了(标准强制的)-I {} xargs 行为规范中隐含的错误。如果它不可用,可以使用 -I '{}' 代替——但请阅读手册页以了解注意事项。