当主机出现时,为什么 `ping -c 1 -W 1800 somehost` 没有成功?

当主机出现时,为什么 `ping -c 1 -W 1800 somehost` 没有成功?

我试图通过执行以下命令来检测主机何时从重新启动中恢复:

ping -c 1 -W 1800 myhost

我希望在 30 分钟之前主机能够成功 ping 通,并且在我的脚本中我可以像ssh主机一样采取一些操作。但主机确实在 30 分钟过去之前启动,我可以通过ping myhost从命令行手动运行来验证这一点,但ping -c 1 -W 1800 myhost没有成功。它只是超时了。

我的操作系统是:

$ uname -a
Linux dev-001 3.10.0-957.1.3.el7.x86_64 #1 SMP Thu Nov 15 17:36:42 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux

答案1

您的命令表示发送一个数据包 ( -c 1) 并等待最多 30 分钟以获得回复 ( -W 1800)。

由于主机在您发送单个数据包时可能已关闭,因此它不太可能发送响应,因此需要ping等待,直到达到截止日期并返回失败。

不幸的是,没有简单的方法可以“ping直到成功”,因此您必须用循环来综合它。此等待时间长达 1800 秒,每五秒发送一次 ping。

end=$(($(date +%s) + 1800))
while [[ $(date +%s) -lt $end ]]
do
    ping -c 1 -i 5 -w 30 -q myhost && break
done

相关内容