不停止检查ping统计信息


28

有没有办法告诉ping他们显示通常的终止统计信息而不停止执行?

例如,我想快速查看:

--- 8.8.8.8 ping statistics ---
2410 packets transmitted, 2274 received, +27 errors, 5% packet loss, time 2412839ms
rtt min/avg/max/mdev = 26.103/48.917/639.493/52.093 ms, pipe 3

无需停止程序,从而丢失了累积的数据。


2
确实,正如Andreas上面建议的那样,您可以使用CTRL + \来获取统计信息而无需退出ping。
乔治

Answers:


34

ping联机帮助页(重点是我的):

发送(接收)指定数量的数据包或使用SIGINT终止程序时,将显示简短摘要。无需终止信号SIGQUIT的过程即可获得更短的电流统计信息。

因此,如果您的统计信息稍微详细一些,则可以这样做:

# the second part is only for showing you the PID
ping 8.8.8.8 & jobs ; fg

<... in another terminal ...>

kill -SIGQUIT $PID

简短的统计信息如下所示:

19/19 packets, 0% loss, min/avg/ewma/max = 0.068/0.073/0.074/0.088 ms

32
稍微增加一点:您可以SIGQUIT通过按“ Ctrl- \”从终端发出,而无需打开第二个终端并使用kill
Andreas Wiese 2014年

6
同样,在BSD变体(包括OSX)上,ping使用SIGINFO信号进行总结,该信号可以通过终端中的Ctrl-T触发。
Brian Cline

1
我经常有多个终端与连续pings去。我通常while true; do ps -o "pid" -C "ping" h | xargs kill -SIGQUIT; sleep 20; done &在启动之前先从第一个终端开始ping。这让我开始新的pingS和/或重新启动现有的pingS(重置统计),而不是需要跟踪PIDS表示kill
Starson Hochschild

1
使用此方法意味着无需& jobs ; fg在答案中使用命令的一部分,因为它的唯一目的是报告PID...。对不起,附加注释-由于5分钟的阈值,因此无法再编辑我的原始注释。
Starson Hochschild

12

在执行过程中还有另一种简单的方法来获取ping统计信息:只需按Ctrl + | (垂直斜线或也称为管道)

我个人经常使用它,请尝试:

64 bytes from 192.168.1.1: icmp_seq=6 ttl=64 time=0.893 ms
64 bytes from 192.168.1.1: icmp_seq=23 ttl=64 time=0.862 ms
64 bytes from 192.168.1.1: icmp_seq=24 ttl=64 time=3.18 ms
64 bytes from 192.168.1.1: icmp_seq=35 ttl=64 time=0.877 ms
64 bytes from 192.168.1.1: icmp_seq=36 ttl=64 time=0.866 ms
**36/36 packets, 0% loss, min/avg/ewma/max = 0.832/0.993/0.930/3.185 ms**
64 bytes from 192.168.1.1: icmp_seq=37 ttl=64 time=0.909 ms
64 bytes from 192.168.1.1: icmp_seq=38 ttl=64 time=2.03 ms
64 bytes from 192.168.1.1: icmp_seq=39 ttl=64 time=0.839 ms
64 bytes from 192.168.1.1: icmp_seq=40 ttl=64 time=0.880 ms

2
不幸的是,从选定的最佳答案中得到答案后,我实际上为该特定功能贡献了一些代码。
2mac,2016年

根据xev,对于在Ubuntu Bionic运行终端机中的我来说,我感到惊讶,Ctrl + \ 它与此处其他答案中提到的组合键相同:Ctrl + |Ctrl + 4。全部产生0x1c的XLookupString,它绑定到SIGQUIT,如所示stty -a。另请参见键盘快捷键-Shell SIGKILL键绑定-超级用户
nealmcb

4

尝试Ctrl+4

它显示了这样的一行:

312/312 packets, 0% loss, min/avg/ewma/max = 0.312/1.236/0.505/208.655 ms

1

如果您的ping不支持有用的SIGQUIT(AIX,Solaris),这是一种解决方法 -无限ping循环,其中每个ping仅触发(例如)10 ping,以便您可以看到中间结果。

while :; do ping -c 10 $HOST; done

要停止它,Control-C只能杀死该ping命令;您可能需要先暂停然后终止工作(Control-z; kill %)。

当然,这并不能提供真实的运行统计信息-仅在那10次ping过程中。


1

您可以使用手表实用程序

watch -n 3 ping -c 1 10.170.0.21

这将ping每3秒运行一次命令,并连续显示输出。


2
这实际上并不能回答问题。如果仔细阅读,其目的是获得运行统计信息。运行新产品ping会丢失历史记录,因此无法提供所需的信息。
2mac

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.