Verifique las estadísticas de ping sin detenerse

28

¿Hay alguna manera de decir pingque muestre sus estadísticas de terminación habituales sin detener la ejecución?

Por ejemplo, me gustaría ver rápidamente:

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

sin tener que detener el programa, perdiendo así los datos acumulados.

2mac
fuente
2
De hecho, como Andreas sugiere anteriormente, puede usar CTRL + \ para obtener las estadísticas sin salir de ping.
George

Respuestas:

34

De la página de pingmanual (énfasis mío):

Cuando se ha enviado (y recibido) el número especificado de paquetes o si el programa finaliza con un SIGINT, se muestra un breve resumen. Se pueden obtener estadísticas de corriente más cortas sin finalización del proceso con la señal SIGQUIT.

Esto funcionará si está bien con sus estadísticas siendo un poco menos detalladas:

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

<... in another terminal ...>

kill -SIGQUIT $PID

Las estadísticas cortas se ven así:

19/19 packets, 0% loss, min/avg/ewma/max = 0.068/0.073/0.074/0.088 ms
pmos
fuente
32
Una pequeña adición: puede emitir SIGQUITdesde el terminal presionando "Ctrl- \", no es necesario tener un segundo terminal abierto y usar kill.
Andreas Wiese
66
Además, en las variantes BSD (incluido OSX), el ping resume con una señal SIGINFO, que puede activarse con Ctrl-T en el terminal.
Brian Cline
1
Regularmente tengo múltiples terminales funcionando con pings continuo . Normalmente comienzo while true; do ps -o "pid" -C "ping" h | xargs kill -SIGQUIT; sleep 20; done &en la primera terminal antes de comenzar ping. Esto permite que empiece a nuevos pings y / o reiniciar existente pings (para restablecer las estadísticas) y no es necesario realizar un seguimiento de PIDs para kill.
Starson Hochschild
1
El uso de este método significa que no hay necesidad de usar la & jobs ; fgparte del comando en la respuesta, ya que su único propósito es informar el PID... Lo siento por el comentario adicional: no puedo editar mi comentario original debido al umbral de 5 minutos.
Starson Hochschild
12

Hay una manera más fácil de obtener las estadísticas de ping durante su ejecución: simplemente presione Ctrl + | (barra vertical o también se llama tubería)

Yo personalmente lo uso muy a menudo, pruébalo:

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
Dr. alexander
fuente
2
En un giro del destino, en realidad contribuí con un código para esa característica en particular después de obtener mi respuesta de la mejor respuesta seleccionada.
2mac
Me sorprende ver que, para mí, en Ubuntu Bionic ejecutando Terminal, según xev, Ctrl + \ es la misma combinación de teclas mencionada en otras respuestas aquí: Ctrl + |y Ctrl + 4. Todos producen una XLookupString de 0x1c que está vinculada a SIGQUIT como se muestra en stty -a. Vea también métodos abreviados de teclado - Shell SIGKILL Keybinding - Super User
nealmcb
4

Probar Ctrl+4

Muestra una línea como esta:

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

Si su ping no admite un SIGQUIT útil (AIX, Solaris), aquí hay una solución alternativa : un bucle de ping infinito donde cada ping solo se dispara (por ejemplo) 10 pings, para que pueda ver resultados intermedios.

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

Para detenerlo, Control-Csolo puede matar el pingcomando; es posible que deba suspender y luego eliminar el trabajo ( Control-z; kill %).

Por supuesto, esto no proporciona verdaderas estadísticas de ejecución, solo en el transcurso de esos 10 pings.

Jeff Schaller
fuente
1

Puedes usar la utilidad de reloj

watch -n 3 ping -c 1 10.170.0.21

Eso ejecutará el pingcomando cada 3 segundos y le mostrará la salida continuamente.

Dima Kazavchinsky
fuente
2
Esto en realidad no responde la pregunta. Si lees detenidamente, el objetivo era tener estadísticas de ejecución. Ejecutar una nueva pingperdería el historial y, por lo tanto, no daría la información deseada.
2mac
1

En Mac es Ctrl+ T.

Ctrl+ \hace lo mismo que Ctrl+ C, ya que detiene el ping después de mostrar las estadísticas.

Stefan Rogin
fuente
Felicitaciones a @ brian-clide, solo noté que respondió ante mí en un comentario.
Stefan Rogin