Vérifier les statistiques de ping sans s'arrêter

28

Existe-t-il un moyen de dire pingd'afficher ses statistiques de terminaison habituelles sans arrêter l'exécution?

Par exemple, je voudrais voir rapidement:

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

sans avoir à arrêter le programme, perdant ainsi les données accumulées.

2mac
la source
2
En effet, comme Andreas le suggère ci-dessus, vous pouvez utiliser CTRL + \ pour obtenir les statistiques sans quitter le ping.
George

Réponses:

34

À partir de la pingpage de manuel (soulignement le mien):

Lorsque le nombre spécifié de paquets a été envoyé (et reçu) ou si le programme se termine avec un SIGINT, un bref résumé s'affiche. Des statistiques de courant plus courtes peuvent être obtenues sans interruption du processus avec le signal SIGQUIT.

Donc, cela fonctionnera si vous êtes d'accord avec vos statistiques étant un peu moins verbeuses:

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

<... in another terminal ...>

kill -SIGQUIT $PID

Les statistiques courtes ressemblent à ceci:

19/19 packets, 0% loss, min/avg/ewma/max = 0.068/0.073/0.074/0.088 ms
pmos
la source
32
Un petit ajout: vous pouvez émettre SIGQUITdepuis le terminal en appuyant sur "Ctrl- \", pas besoin d'avoir un deuxième terminal ouvert et utilisé kill.
Andreas Wiese
6
De plus, sur les variantes BSD (y compris OSX), le ping résume avec un signal SIGINFO, qui peut être déclenché avec Ctrl-T dans le terminal.
Brian Cline
1
J'ai régulièrement plusieurs terminaux fonctionnant en continu ping. Je commence généralement while true; do ps -o "pid" -C "ping" h | xargs kill -SIGQUIT; sleep 20; done &dans le premier terminal avant de démarrer le ping. Cela me permet de démarrer de nouveaux pings et / ou de redémarrer des pings existants (pour réinitialiser les statistiques) et pas besoin de suivre les PIDs pour kill.
Starson Hochschild
1
L'utilisation de cette méthode signifie qu'il n'est pas nécessaire d'utiliser la & jobs ; fgpartie de la commande dans la réponse car son seul but est de signaler le PID... Désolé pour le commentaire supplémentaire - je ne peux plus modifier mon commentaire d'origine en raison du seuil de 5 minutes.
Starson Hochschild
12

Il existe un autre moyen simple d'obtenir les statistiques de ping pendant son exécution: appuyez simplement sur Ctrl + | (barre oblique verticale ou elle est aussi appelée pipe line)

Je l'utilise personnellement très souvent, essayez-le:

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
la source
2
Dans une tournure du destin, j'ai en fait contribué du code vers cette fonctionnalité particulière après avoir obtenu ma réponse de la meilleure réponse sélectionnée.
2mac
Je suis surpris de voir que, selon moi, dans Ubuntu Bionic, Terminal tournant, Ctrl + \ est la même que la combinaison de touches mentionnée dans d'autres réponses ici: Ctrl + |et Ctrl + 4. Tous produisent un XLookupString de 0x1c qui est lié à SIGQUIT comme indiqué par stty -a. Voir aussi raccourcis clavier - Shell SIGKILL Keybinding - Super User
nealmcb
4

Essayez Ctrl+4

Il montre une ligne comme celle-ci:

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

Si votre ping ne prend pas en charge un SIGQUIT utile (AIX, Solaris), voici une solution de contournement - une boucle de ping infinie où chaque ping ne se déclenche que (par exemple) 10 pings, afin que vous puissiez voir les résultats intermédiaires.

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

Pour l'arrêter, Control-Cne peut que tuer la pingcommande; vous devrez peut-être suspendre puis supprimer le travail ( Control-z; kill %).

Bien sûr, cela ne fournit pas de vraies statistiques de course - juste au cours de ces 10 pings.

Jeff Schaller
la source
1

Vous pouvez utiliser l'utilitaire de surveillance

watch -n 3 ping -c 1 10.170.0.21

Cela exécutera la pingcommande toutes les 3 secondes et vous montrera la sortie en continu.

Dima Kazavchinsky
la source
2
Cela ne répond pas vraiment à la question. Si vous lisez attentivement, le but était d'avoir des statistiques en cours d'exécution. L'exécution d'un nouveau pingperdrait l'historique et ne donnerait donc pas les informations souhaitées.
2mac
1

Sur Mac c'est Ctrl+ T.

Ctrl+ \fait la même chose que Ctrl+ C, car il arrête le ping après avoir montré les statistiques.

Stefan Rogin
la source
Bravo à @ brian-clide, je viens de remarquer qu'il a répondu avant moi dans un commentaire.
Stefan Rogin