Wie erhalte ich die aktuellen Upload- und Download-Geschwindigkeiten im Terminal?

10

Ich möchte, dass das Terminal die aktuellen Upload- und Download-Geschwindigkeiten meiner Netzwerkverbindung ausgibt. Ich möchte die Geschwindigkeiten nicht in Echtzeit überwachen. Ich möchte nur einen "statischen" Wert, um ihn in eine Datei schreiben zu können.

Wie erreiche ich es?

Schmerzhirn
quelle

Antworten:

14

Seltsamerweise scheint der einfachste Weg zu sein /proc/net/dev. Ich habe Folgendes geschrieben, um diese Datei zweimal (mit einer zweiten Verzögerung) zu vergleichen und dann die Gesamtbytewerte zu subtrahieren. In diesem Fall em1handelt es sich um den Netzwerkadapter. Ändern Sie diesen einfach in das, was Sie sich ansehen müssen.

awk '/em1/ {i++; rx[i]=$2; tx[i]=$10}; END{print rx[2]-rx[1] " " tx[2]-tx[1]}' \
 <(cat /proc/net/dev; sleep 1; cat /proc/net/dev)

Die Ausgabe besteht aus zwei Zahlen. Empfangene Bytes pro Sekunde, gefolgt von gesendeten Bytes pro Sekunde.

Oli
quelle
3
Na, bitte. Hat es zu einer awk-Aussage zusammengefasst. Bootiful.
Oli
11

Hier ist eine Variation von Olis hervorragender Lösung:

awk '{if(l1){print $2-l1,$10-l2} else{l1=$2; l2=$10;}}' \
  <(grep wlan0 /proc/net/dev) <(sleep 1; grep wlan0 /proc/net/dev)

Es wird das gleiche Ergebnis wie bei Olis Ansatz gedruckt:

$ awk '{if(l1){print $2-l1,$10-l2} else{l1=$2; l2=$10;}}' \
>   <(grep wlan0 /proc/net/dev) <(sleep 1; grep wlan0 /proc/net/dev)
401500 30286

Der erste Wert ist die Download-Rate in Bytes pro Sekunde und der zweite die Upload-Rate. Sie könnten ein menschlicheres Format erhalten mit:

$ awk '{if(l1){print ($2-l1)/1024"kB/s",($10-l2)/1024"kB/s"} else{l1=$2; l2=$10;}}' \
    <(grep wlan0 /proc/net/dev) <(sleep 1; grep wlan0 /proc/net/dev)
398.771kB/s 82.8066kB/s
Terdon
quelle
Hinweis: Unter Ubuntu 18.04 musste ich wlp1s0statt verwenden wlan0. Ich werde die Antwort nicht bearbeiten, da ich weiß, dass dies von der Distribution abhängt.
Daniel Serodio