让 ping 继续 运行 即使网络消失
Make ping continue running even if network disappears
我正在终端 (ubuntu 18.04) 中使用以下命令通过 ping 测试评估 ISP 质量:
sudo ping -i .001 -w 900 -W 899 www.google.com |
while read pong; do
echo "$(date +"%T.%N"): $pong"
done > "test_$(date +"%Y_%m_%d__%H%M").txt"
测试旨在 运行 15 分钟 (-w 900),但是如果互联网连接丢失(即路由器关闭),该命令将停止 运行ning 并且文本文件已关闭。
我尝试使用 -W
选项(超时)但没有成功。
有没有办法让命令尝试重新连接并继续测试?
跟踪这些断开连接对于分析很重要。
您可以使用 运行 15 分钟的循环包装支票。每次测试可限时1分钟,
START=$SECONDS
while ((SECONDS-START<15*60)) ; do
S1=$SECONDS
sudo ping -i .001 -w 60 -W 899 www.google.com |
while read pong; do
echo "$(date +"%T.%N"): $pong"
done
if ((SECONDS-S1<59)) ; then
echo "Disconnect"
sleep 1
fi
done > "test_$(date +"%Y_%m_%d__%H%M").txt"
关注https://serverfault.com/questions/503820/linux-ping-command-exits-early-due-to-icmp-host-unreachable
这是一个可以接受的解决方案:
sudo timeout 900s ping -i .001 www.google.com |
while read pong; do
echo "$(date +"%T.%N"): $pong"
done > "test_$(date +"%Y_%m_%d__%H%M").txt"
如 link 所述,-w
选项有一个奇怪的行为,即在网络断开后退出 ping 命令。
此解决方案的缺点是 ping 统计输出丢失。
我正在终端 (ubuntu 18.04) 中使用以下命令通过 ping 测试评估 ISP 质量:
sudo ping -i .001 -w 900 -W 899 www.google.com |
while read pong; do
echo "$(date +"%T.%N"): $pong"
done > "test_$(date +"%Y_%m_%d__%H%M").txt"
测试旨在 运行 15 分钟 (-w 900),但是如果互联网连接丢失(即路由器关闭),该命令将停止 运行ning 并且文本文件已关闭。
我尝试使用 -W
选项(超时)但没有成功。
有没有办法让命令尝试重新连接并继续测试?
跟踪这些断开连接对于分析很重要。
您可以使用 运行 15 分钟的循环包装支票。每次测试可限时1分钟,
START=$SECONDS
while ((SECONDS-START<15*60)) ; do
S1=$SECONDS
sudo ping -i .001 -w 60 -W 899 www.google.com |
while read pong; do
echo "$(date +"%T.%N"): $pong"
done
if ((SECONDS-S1<59)) ; then
echo "Disconnect"
sleep 1
fi
done > "test_$(date +"%Y_%m_%d__%H%M").txt"
关注https://serverfault.com/questions/503820/linux-ping-command-exits-early-due-to-icmp-host-unreachable
这是一个可以接受的解决方案:
sudo timeout 900s ping -i .001 www.google.com |
while read pong; do
echo "$(date +"%T.%N"): $pong"
done > "test_$(date +"%Y_%m_%d__%H%M").txt"
如 link 所述,-w
选项有一个奇怪的行为,即在网络断开后退出 ping 命令。
此解决方案的缺点是 ping 统计输出丢失。