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.