Überprüfen Sie die Ping-Statistiken, ohne sie anzuhalten


28

Gibt es eine Möglichkeit, die pingüblichen Beendigungsstatistiken anzuzeigen, ohne die Ausführung zu stoppen?

Ich möchte zum Beispiel schnell Folgendes anzeigen:

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

ohne das Programm anhalten zu müssen, wodurch die angesammelten Daten verloren gehen.


2
In der Tat können Sie, wie Andreas oben vorschlägt, STRG + \ verwenden, um die Statistik abzurufen, ohne Ping zu beenden.
George

Antworten:


34

Aus der pingManpage (Hervorhebung meiner):

Wenn die angegebene Anzahl von Paketen gesendet (und empfangen) wurde oder das Programm mit einem SIGINT beendet wurde, wird eine kurze Zusammenfassung angezeigt. Kürzere aktuelle Statistiken können ohne Beendigung des Prozesses mit dem Signal SIGQUIT erhalten werden.

Das funktioniert also, wenn deine Statistiken etwas weniger ausführlich sind:

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

<... in another terminal ...>

kill -SIGQUIT $PID

Kurze Statistiken sehen so aus:

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

32
Ein SIGQUITkleiner Zusatz: Sie können vom Terminal aus senden, indem Sie "Strg- \" drücken, ohne dass ein zweites Terminal geöffnet und verwendet werden muss kill.
Andreas Wiese

6
Bei BSD-Varianten (einschließlich OSX) fasst Ping außerdem ein SIGINFO-Signal zusammen, das mit Strg-T im Terminal ausgelöst werden kann.
Brian Cline

1
Ich habe regelmäßig mehrere Terminals im Dauerbetrieb ping. Normalerweise starte ich while true; do ps -o "pid" -C "ping" h | xargs kill -SIGQUIT; sleep 20; done &im ersten Terminal, bevor ich das starte ping. Auf diese Weise kann ich neue pings starten und / oder vorhandene pings neu starten (um die Statistiken zurückzusetzen), ohne PIDs nachverfolgen zu müssen kill.
Starson Hochschild

1
Wenn Sie diese Methode verwenden, müssen Sie den & jobs ; fgTeil des Befehls nicht in der Antwort verwenden, da der einzige Zweck darin besteht, die PID... Entschuldigung für den zusätzlichen Kommentar - mein ursprünglicher Kommentar kann aufgrund des Schwellenwerts von 5 Minuten nicht mehr bearbeitet werden.
Starson Hochschild

12

Es gibt eine weitere einfache Möglichkeit, die Ping-Statistiken während der Ausführung abzurufen: Drücken Sie einfach Strg + | (vertikaler Schrägstrich oder auch Rohrleitung genannt)

Ich persönlich benutze es sehr oft, probiere es aus:

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 einer Wendung des Schicksals trug ich tatsächlich etwas Code zu dieser speziellen Funktion bei, nachdem ich meine Antwort von der ausgewählten besten Antwort erhalten hatte.
2mac

Ich bin überrascht zu sehen, dass für mich in Ubuntu Bionic das Ausführen von Terminal laut xev Ctrl + \ mit der Tastenkombination übereinstimmt, die in anderen Antworten hier erwähnt wurde: Ctrl + |und Ctrl + 4. Alle liefern einen XLookupString von 0x1c, der wie in gezeigt an SIGQUIT gebunden ist stty -a. Siehe auch Tastenkombinationen - Shell SIGKILL-Tastenkombination - Super User
nealmcb

4

Versuchen Sie Ctrl+4

Es zeigt eine Zeile wie diese:

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

1

Wenn Ihr Ping kein nützliches SIGQUIT (AIX, Solaris) unterstützt, finden Sie hier eine Problemumgehung : eine unendliche Ping-Schleife, in der jeder Ping nur 10 Pings auslöst, sodass Sie Zwischenergebnisse sehen können.

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

Um dies zu stoppen, Control-Cdarf nur der pingBefehl beendet werden. Möglicherweise müssen Sie den Job anhalten und dann beenden ( Control-z; kill %).

Dies liefert natürlich keine echten Laufstatistiken - nur über den Verlauf dieser 10 Pings.


1

Sie können das Überwachungsdienstprogramm verwenden

watch -n 3 ping -c 1 10.170.0.21

Dadurch wird der pingBefehl alle 3 Sekunden ausgeführt und die Ausgabe wird fortlaufend angezeigt.


2
Dies beantwortet die Frage nicht wirklich. Wenn Sie sorgfältig lesen, bestand der Zweck darin, Laufstatistiken zu haben. Das Ausführen eines neuen pingwürde den Verlauf verlieren und daher nicht die gewünschten Informationen liefern.
2mac

1

Auf dem Mac ist es Ctrl+ T.

Ctrl+ \macht dasselbe wie Ctrl+ C, da es den Ping stoppt, nachdem die Statistiken angezeigt wurden.


Ein großes Lob an @ brian-clide, habe gerade bemerkt, dass er vor mir in einem Kommentar geantwortet hat.
Stefan Rogin
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.