Controlla le statistiche del ping senza fermarsi


28

C'è un modo per dire pingdi mostrare le sue consuete statistiche di terminazione senza interrompere l'esecuzione?

Ad esempio, vorrei visualizzare 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

senza dover interrompere il programma, perdendo così i dati accumulati.


2
Infatti, come suggerisce Andreas sopra, puoi usare CTRL + \ per ottenere le statistiche senza uscire dal ping.
George,

Risposte:


34

Dalla pingmanpage (sottolineatura mia):

Quando il numero specificato di pacchetti è stato inviato (e ricevuto) o se il programma è terminato con un SIGINT, viene visualizzato un breve riepilogo. È possibile ottenere statistiche correnti più brevi senza interruzione del processo con il segnale SIGQUIT.

Quindi funzionerà se stai bene con le tue statistiche leggermente meno dettagliate:

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

<... in another terminal ...>

kill -SIGQUIT $PID

Le statistiche brevi si presentano così:

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

32
Una leggera aggiunta: è possibile emettere SIGQUITdal terminale premendo "Ctrl- \", non è necessario avere un secondo terminale aperto e utilizzare kill.
Andreas Wiese,

6
Inoltre, sulle varianti BSD (incluso OSX), il ping si riassume con un segnale SIGINFO, che può essere attivato con Ctrl-T nel terminale.
Brian Cline,

1
Ho regolarmente più terminali funzionanti con continuità pingcontinua. Di solito inizio while true; do ps -o "pid" -C "ping" h | xargs kill -SIGQUIT; sleep 20; done &nel primo terminale prima di avviare il ping. Questo mi permette di avviare nuove pings e / o riavviare esistente pings (per resettare le statistiche) e non hanno bisogno di tenere traccia PIDs per kill.
Starson Hochschild

1
L'uso di questo metodo significa che non è necessario utilizzare la & jobs ; fgparte del comando nella risposta poiché il suo unico scopo è riportare il PID... Ci scusiamo per il commento aggiuntivo - non posso più modificare il mio commento originale a causa della soglia di 5 minuti.
Starson Hochschild

12

C'è un altro modo semplice per ottenere le statistiche del ping durante l'esecuzione: basta premere Ctrl + | (barra verticale o anche chiamata tubazione)

Lo uso personalmente molto spesso, provalo:

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
In un colpo di scena, in realtà ho contribuito con un po 'di codice a quella particolare funzione dopo aver ottenuto la mia risposta dalla migliore risposta selezionata.
2

Sono sorpreso di vedere che, per me in Ubuntu Bionic che esegue Terminal, secondo xev, Ctrl + \ è lo stesso della combinazione di tasti menzionata in altre risposte qui: Ctrl + |e Ctrl + 4. Tutti producono un XLookupString di 0x1c che è associato a SIGQUIT come mostrato da stty -a. Vedi anche le scorciatoie da tastiera - Shell SIGKILL Keybinding - Super User
nealmcb

4

Prova Ctrl+4

Mostra una linea come questa:

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

1

Se il tuo ping non supporta un SIGQUIT utile (AIX, Solaris), ecco una soluzione alternativa : un loop ping infinito in cui ogni ping si attiva solo (ad esempio) 10 ping, in modo da poter vedere risultati intermedi.

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

Per fermarlo, Control-Cpuò solo uccidere il pingcomando; potrebbe essere necessario sospendere e quindi terminare il lavoro ( Control-z; kill %).

Questo ovviamente non fornisce statistiche di funzionamento reali, proprio nel corso di quei 10 ping.


1

È possibile utilizzare l'utilità di visualizzazione

watch -n 3 ping -c 1 10.170.0.21

Ciò eseguirà il pingcomando ogni 3 secondi e mostrerà l'output continuamente.


2
Questo in realtà non risponde alla domanda. Se leggi attentamente, lo scopo era avere statistiche di corsa. L'esecuzione di un nuovo pingperderebbe la cronologia e quindi non darebbe le informazioni desiderate.
2

1

Su Mac è Ctrl+ T.

Ctrl+ \fa lo stesso di Ctrl+ C, poiché arresta il ping dopo aver mostrato le statistiche.


Complimenti a @ brian-clide, ho appena notato che ha risposto davanti a me in un commento.
Stefan Rogin,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.