如果1秒后没有回复,如何停止ping命令?

如果1秒后没有回复,如何停止ping命令?

我正在编写一个循环来检查是否已建立连接。

我正在做

ping -c 1 8.8.8.8
while [ $? -ne 0 ] do
  sleep 0.5
  ping -c 1 8.8.8.8
done

现在我不确定这是如何工作的,如果 ping 请求在发出时被阻止(iptables 或其他),命令和脚本将无限期挂起。我想要的是 1 秒后停止等待回复并发送新请求。直到我以超过 1 秒的速度得到答复之前,$?等于 0 并且它会中断循环。

答案1

while ! (ping -c 1 -W 1 8.8.8.8 > /dev/null); do
  sleep 1
done
echo "< 1 sec reply received...exiting"

相关内容