Wie soll ich die aktuelle Netzwerkauslastung ermitteln?
9
Ich möchte die aktuelle Netzwerkauslastung (Bandbreitennutzung) einer Schnittstelle einer Debian-Box auf einer Website anzeigen. Es soll nicht sehr ausführlich oder präzise sein, nur eine einfache Zahl wie "52 Mbit / s".
Typische Netzwerkbandbreitenmonitore wie z. B. iftopgeben mir keine Möglichkeit, einen solchen Wert einfach zu extrahieren.
Wie kann ich es am besten abrufen?
Zum Beispiel könnte ich /proc/net/devalle paar Minuten analysieren . Ich bin mir nicht sicher, ob dies wirklich der beste Weg ist, dies zu tun.
Der beste Weg, dies einfach zu tun, ist wahrscheinlich das Parsen /proc/net/dev(seien Sie gewarnt, dass /proces nicht portabel ist). Hier ist ein bashSkript, das ich schnell zusammengestellt habe und das es berechnen kann:
Beachten Sie, dass sleepdie Zeit, die für die Ausführung der Operationen in der while-Schleife benötigt wird, nicht berücksichtigt wird. Dies ist also (sehr geringfügig) ungenau. Bei meiner 600-MHz-Coppermine dauert die Schleife 0,011 Sekunden - eine vernachlässigbare Ungenauigkeit für die meisten Zwecke. Beachten Sie auch, dass bash bei Verwendung der (auskommentierten) Kilobyte / Megabit-Ausgänge nur die Ganzzahlarithmetik versteht.
Ich denke, dass dies die gewählte Antwort sein sollte. Jede andere Lösung setzt hinter den Kulissen auf das Parsen /proc/net/dev, ohne wirklich zu verstehen, was und wie diese Magie geschieht.
Eran
Diese Lösung funktionierte für mich auf einem Router / einer Busybox.
Cloneman
Verwenden Sie date +%s.%Ndiese Option, um den Unix-Zeitstempel für jede Iteration abzurufen und die Byte-Differenz durch die Zeitstempeldifferenz zu dividieren. Dann vermeiden Sie das Problem, dass Schleifeniterationen länger als 1s sind.
Arnavion
3
Es gibt Netzwerkverkehrsmonitore wie vnstat
, die monatliche Aufzeichnungen Ihres Datenverkehrs führen, oder Slurm, der seine Werte direkt von den im Kernel gespeicherten Werten übernimmt. Es ist in den meisten Distributionen erhältlich.
Können Sie das ein wenig erklären? Was genau soll der Parameter sein? Welche Bedeutung hat das 125? Bitte antworten Sie nicht in Kommentaren; Bearbeiten Sie Ihre Antwort, um sie klarer und vollständiger zu gestalten.
/proc/net/dev
, ohne wirklich zu verstehen, was und wie diese Magie geschieht.date +%s.%N
diese Option, um den Unix-Zeitstempel für jede Iteration abzurufen und die Byte-Differenz durch die Zeitstempeldifferenz zu dividieren. Dann vermeiden Sie das Problem, dass Schleifeniterationen länger als 1s sind.Es gibt Netzwerkverkehrsmonitore wie vnstat , die monatliche Aufzeichnungen Ihres Datenverkehrs führen, oder Slurm, der seine Werte direkt von den im Kernel gespeicherten Werten übernimmt. Es ist in den meisten Distributionen erhältlich.
Folgendes sehe ich, wenn ich renne
slurm -i ra0
:quelle
Hier ist ein sehr einfaches Shell-Skript, um dies zu berechnen:
Starten Sie einfach das Skript, indem Sie den Schnittstellennamen übergeben, z.
./shtraf eth1
quelle
125
? Bitte antworten Sie nicht in Kommentaren; Bearbeiten Sie Ihre Antwort, um sie klarer und vollständiger zu gestalten.