简单脚本,以便在Linux机器上执行重启
for i in $LIST_OF_LINUX_MACHINES
do
ssh $LINUX_MACHINE /var/tmp/restart.sh
done
运行此脚本几次后,
有时候ssh进程被卡住了! (并且循环卡在当前机器上) -
所以它是怎么回事 - 在极少数情况下ssh被卡住的原因可能是什么
以及如何避免这种情况?
答案 0 :(得分:0)
我建议一些相当不同的东西 - 而不是在实例之间有固定的延迟,一次运行固定的最大实例数。例如,该值为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 '{}'
- 但请阅读手册页以了解警告。