Ich muss die Netzwerkaktivitäten eines Prozesses und die Bandbreite der Verbindung überwachen. Daher habe ich beschlossen, diese Funktion zu verwenden nethog
und netperf
mit zu kombinieren grep
und awk
die Werte in eine Datei zu schreiben.
nethog
Befehl: nethogs -t eth0 | grep firefox | awk '{ print $3 }'
(Ich möchte die Upload-/Download-Geschwindigkeit übernehmen).Das 1. Problemist, dass der Befehl nichts druckt.
Weitere Details: Befehl: nethogs -t eth0 | grep firefox
Ausgabe:
usr/lib/firefox/firefox-bi�)/4956/1000 0.338867 0.239063
/usr/lib/firefox/firefox-bi�)/4956/1000 0.543555 0.274219
/usr/lib/firefox/firefox-bi�)/4956/1000 0.794531 0.489844
/usr/lib/firefox/firefox-bi�)/4956/1000 0.794531 0.489844
/usr/lib/firefox/firefox-bi�)/4956/1000 0.749023 0.589844
/usr/lib/firefox/firefox-bi�)/4956/1000 1.30098 3.47617
/usr/lib/firefox/firefox-bi�)/4956/1000 1.90449 8.0127
/usr/lib/firefox/firefox-bi�)/4956/1000 5.31641 25.0033
/usr/lib/firefox/firefox-bi�)/4956/1000 8.60762 42.0176
Ich möchte die beiden Werte unten rechts. Aber wie Sie sehen, ist die Ausgabe nicht konsistent (das Leerzeichen), addieren Sie | awk '{print $3}' most of the time return nothing
. Und das kann ich nicht beheben.
netperf
Befehl: netperf -H 192.168.1.10
und die Ausgabe ist:
Recv Send Send
Socket Socket Message Elapsed
Size Size Size Time Throughput
bytes bytes bytes secs. 10^6bits/sec
524288 524288 262144 10.00 **718.62**
Ich möchte den Wert unten rechts drucken, habe aber keine Ahnung, wie das geht. Das ist die2. Problem=> gelöst von fedorqui!
Könnt ihr mir helfen? Ich bin für alle Ideen dankbar!
Antwort1
Für die2. Problem, du kannst tun:
your_command | tail -1 | awk '{print $NF}'
Dadurch wird das letzte Feld der letzten Zeile der angegebenen Eingabe gedruckt.
Antwort2
Beginnen wir damit:
nethogs -t eth0 | awk '/firefox/{ print $3 }'
netperf -H 192.168.1.10 | awk 'END{ print $NF }'
Wenn diese nicht funktionieren, geben Sie Beispieleingaben für die Awk-Skripte, die erwartete Ausgabe und Erklärungen an.
Du bräuchtest:
netperf -H 192.168.1.10 | awk '{v=$NF} END{ print v }'
mit einigen AWKs, da POSIX nicht verlangt, Felder im END-Abschnitt beizubehalten.