Verifique as estatísticas de ping sem parar


28

Existe uma maneira de dizer pingpara mostrar suas estatísticas de terminação habituais sem interromper a execução?

Por exemplo, eu gostaria de visualizar rapidamente:

--- 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

sem ter que parar o programa, perdendo assim os dados acumulados.


2
De fato, como Andreas sugere acima, você pode usar CTRL + \ para obter as estatísticas sem sair do ping.
George

Respostas:


34

Na página de pingmanual (ênfase minha):

Quando o número especificado de pacotes tiver sido enviado (e recebido) ou se o programa for finalizado com um SIGINT, um breve resumo será exibido. Estatísticas de corrente mais curtas podem ser obtidas sem o término do processo com o sinal SIGQUIT.

Portanto, isso funcionará se você estiver bem com suas estatísticas um pouco menos detalhadas:

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

<... in another terminal ...>

kill -SIGQUIT $PID

Estatísticas breves são assim:

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

32
One slight addition: You can emit SIGQUIT from the terminal by hitting "Ctrl-\", no need to have a second terminal open and use kill.
Andreas Wiese

6
Além disso, nas variantes BSD (incluindo OSX), o ping é resumido com um sinal SIGINFO, que pode ser acionado com Ctrl-T no terminal.
Brian Cline

1
Eu regularmente tenho vários terminais em funcionamento contínuo ping. Normalmente começo while true; do ps -o "pid" -C "ping" h | xargs kill -SIGQUIT; sleep 20; done &no primeiro terminal antes de iniciar o ping. Isso permite que eu inicie novos se ping/ ou reinicie os existentes ping(para redefinir as estatísticas) e não precise rastreá- PIDlos kill.
Starson Hochschild

1
Usar esse método significa que não há necessidade de usar a & jobs ; fgparte do comando na resposta, pois seu único objetivo é reportar o PID... Desculpe pelo comentário adicional - não é mais possível editar meu comentário original devido ao limite de 5 minutos.
Starson Hochschild

12

Há mais uma maneira fácil de obter as estatísticas de ping durante a execução: basta pressionar Ctrl + | (barra vertical ou também é chamada de tubulação)

Eu pessoalmente o uso com muita frequência, tente:

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
Em uma reviravolta do destino, na verdade eu contribuí com algum código para esse recurso específico depois de obter minha resposta da melhor resposta selecionada.
2mac

Estou surpreso ao ver que, para mim no Ubuntu Bionic executando o Terminal, de acordo com o xev, Ctrl + \ é o mesmo que a combinação de teclas mencionada em outras respostas aqui: Ctrl + |e Ctrl + 4. Todos produzem um XLookupString de 0x1c que está vinculado a SIGQUIT, conforme mostrado por stty -a. Veja também atalhos de teclado - Shell SIGKILL Keybinding
Superusuário

4

Experimente Ctrl+4

Mostra uma linha como esta:

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

1

Se o seu ping não suportar um SIGQUIT útil (AIX, Solaris), aqui está uma solução alternativa - um loop infinito de ping em que cada ping dispara apenas (por exemplo) 10 pings, para que você possa ver resultados intermediários.

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

Para pará-lo, Control-Cpode apenas matar o pingcomando; pode ser necessário suspender e depois matar o trabalho ( Control-z; kill %).

Obviamente, isso não fornece estatísticas de execução verdadeiras - apenas ao longo desses 10 pings.


1

Você pode usar o utilitário de relógio

watch -n 3 ping -c 1 10.170.0.21

Isso executará o pingcomando a cada 3 segundos e mostrará a saída continuamente.


2
Na verdade, isso não responde à pergunta. Se você ler atentamente, o objetivo era ter estatísticas em execução. A execução de um novo pingperderia o histórico e, portanto, não forneceria a informação desejada.
2mac

1

No Mac , é Ctrl+ T.

Ctrl+ \faz o mesmo que Ctrl+ C, pois para o ping depois de mostrar as estatísticas.


Parabéns ao @ brian-clide, só notei que ele respondeu antes de mim em um comentário.
Stefan Rogin 17/06
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.