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 '{}'
代替——但请阅读手册页以了解注意事项。
用于在 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 '{}'
代替——但请阅读手册页以了解注意事项。