当我们使用Windows ping时,它将显示失败的ping。Ubuntu有类似的功能吗?
调试网络时,失败的ping非常有用。你们如何解决这个问题?好吧,我只想要简单的解决方案,我不想弄一个长脚本。
5 packets transmitted, 0 received, 100% packet loss, time 4032ms
(如ping终止本身或通过Ctrl + C终止时显示的信息)?您是否正在寻找有关每个ping的单独数据?
当我们使用Windows ping时,它将显示失败的ping。Ubuntu有类似的功能吗?
调试网络时,失败的ping非常有用。你们如何解决这个问题?好吧,我只想要简单的解决方案,我不想弄一个长脚本。
5 packets transmitted, 0 received, 100% packet loss, time 4032ms
(如ping终止本身或通过Ctrl + C终止时显示的信息)?您是否正在寻找有关每个ping的单独数据?
Answers:
正确的答案是:没有“ 失败的 ping 失败 ”之类的东西。(总是打印诸如“目标不可达”之类的故障回复,这与根本没有回复是不同的。)
Ping实用程序会打印每个收到的答复,即使它认为更该特定的ping丢失了。完全有可能收到乱序的答复。
即使在我的Android手机,股票Ping实用程序支持这两个选项:
-D打印时间戳每一个消息之前
-O打印时的答复没有及时收到消息,它或多或少发生了什么问。
但是,似乎并非所有地方都支持这些选项(例如,据我所知Debian Wheezy缺少这些选项,而Jessie busybox ping
则没有。)不支持它们。
这是我设法获得的示例输出(跳过了不重要的ping答复):
u0_a93@NX505J:/ $ ping -D -O 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
[1440545014.805478] 64 bytes from 8.8.8.8: icmp_seq=1 ttl=244 time=116 ms
~~~~~~~~~~
[1440545142.995443] 64 bytes from 8.8.8.8: icmp_seq=129 ttl=244 time=110 ms
[1440545144.885601] no answer yet for icmp_seq=130
[1440545145.455485] 64 bytes from 8.8.8.8: icmp_seq=131 ttl=244 time=568 ms
[1440545145.455780] 64 bytes from 8.8.8.8: icmp_seq=130 ttl=244 time=1569 ms
[1440545146.005850] 64 bytes from 8.8.8.8: icmp_seq=132 ttl=244 time=119 ms
~~~~~~~~~~
[1440545254.055962] 64 bytes from 8.8.8.8: icmp_seq=240 ttl=244 time=115 ms
^C
--- 8.8.8.8 ping statistics ---
240 packets transmitted, 240 received, 0% packet loss, time 239250ms
rtt min/avg/max/mdev = 109.062/138.757/1569.620/101.608 ms, pipe 2
注意如何首先报告丢失#130,然后在#131 之后接收它,最后报告数据包丢失为零。
关于Windows的附加说明:
在Windows上,ping似乎要等待更长的时间,然后声明它丢失,如果稍后出现,则将其忽略。
默认情况下,间隔为1秒,超时为4秒,因此:
在低RTT时,将以1秒的间隔发送ping。
在RTT> 4上,将以4秒的时间间隔(或5个不确定)发送ping,并且将全部报告为失败,就像服务器没有响应一样。
-O
选项已存在,并且在iputils-ping软件包版本3:20121221-4ubuntu1.1
EvgEnZh部分回答了这个问题,但使用了我自己的版本:
ping -O -q 8.8.8.8
这样一来,当回复时间过长或永不回信(-O
)时,它会打印一条消息,并在回信时()则禁止显示消息-q
。结果是只有在数据包丢失时才获得输出。通过这样做,可以使查找间歇性问题变得更加容易,这样您就不必在中断的几个地方仔细查看一堆“有效”的消息。
也许ping -f
适合您。从ping手册:
-F
洪水ping。对于每个发送的ECHO_REQUEST,将打印一个句号“。'',而对于收到的ECHO_REPLY,则始终打印一个退格键。这样可以快速显示正在丢弃的数据包数量。如果未指定时间间隔,则将时间间隔设置为零,并以最快的速度输出数据包或每秒输出一百次,以较高者为准。只有超级用户可以零间隔使用此选项。
对于每秒1个echo_request,它看起来像 ping -i 1 -f 8.8.8.8
即使使用-v选项,ping也不会这样做。看到这个问题。但是,如果这对您确实很重要(或很有趣),则可以下载源代码,修改代码以包含适当的printf调用。这样做的一个好地方是方法'send_probe'的末尾(12.10的第619行)...
首先,你得到了来源
apt-get source iputils
cd iputils*
进行编辑
gedit ping.c
生成并安装生成的软件包...
apt-get install libsysfs-dev
dpkg-buildpackage
感谢所有的答案。看来最新的ubuntu ping可以显示ping失败。
再次感谢。
ping -O -q 8.8.8.8
是要走的路。