Linux-Tool zur Überwachung des Bandbreitenverbrauchs eines bestimmten Prozesses (PID)

7

Gibt es ein Tool oder einen Befehl, mit dessen Hilfe der Bandbreitenverbrauch eines bestimmten Prozesses (PID) erfasst werden kann, genau wie beim Systemmonitor, jedoch für einen einzelnen bestimmten Prozess, wie im folgenden Screenshot dargestellt Geben Sie hier die Bildbeschreibung ein

Ich werde mit einem Befehlszeilentool zufrieden sein, das diesen Verlauf zumindest in Dateien exportiert. (Ich bin auf Ubuntu 16.04)

Update 1

Ich möchte mindestens ein Tool wie Nethogs , das in Dateien ausgegeben werden kann (Nethogs erfasst nur TCP-Verbindungen). Ein ähnliches Tool, das sowohl auf TCP als auch auf UDP abzielt , wäre großartig

Update 2

Jedes Skript, jede Kombination anderer Tools (wie Wireshark) würde ebenfalls helfen.

AymenDaoudi
quelle
1
tcpdump (und pcap) oder ein übergeordnetes Tool wie ntop .
Elliott Frisch

Antworten:

2

Haben Sie sich das Werkzeug oben angesehen? Laut der Manpage dafür:

"Die Netzwerklast wird pro Prozess angezeigt, wenn das Kernelmodul" netatop "installiert wurde."

farhangfarhangfar
quelle
2

Da ich keine einfache / klare / "sofort einsatzbereite" Lösung gefunden habe, musste ich eine bescheidene Lösung, Korrekturen, Umgestaltungen und weitere Optionen vornehmen.

-> https://github.com/AymenDaoudi/NeTraf

AymenDaoudi
quelle
0

Wie wäre es mit iftop, um das Verkehrsaufkommen an bestimmten Ports zu analysieren und dann lsofzu bestimmen, welcher Prozess welchen Port verwendet?

Gasp0de
quelle
Kann iftopKB / s für UPs und Downs melden? Kann es das in eine externe Datei ausgeben?
AymenDaoudi
0

Nethogs könnten das sein, was Sie wollen.

debian / ubuntu / etc.

apt-get install nethogs

oder rhel / cent / etc.

yum install nethogs

Sie führen es auf der Netzwerkschnittstelle aus, z

nethogs eth0

Die Ausgabe erfolgt jedoch über die Bandbreite pro gesendetem und empfangenem Prozess. Sie können auch mehrere Schnittstellen überwachen.

BESCHREIBUNG NetHogs ist ein kleines "Net Top" -Tool. Anstatt den Datenverkehr wie bei den meisten dieser Tools pro Protokoll oder Subnetz aufzuschlüsseln, wird die Bandbreite nach Prozessen gruppiert - und es muss kein spezielles Kernelmodul geladen werden. Wenn also plötzlich viel Netzwerkverkehr herrscht, können Sie NetHogs starten und sofort sehen, welche PID dies verursacht. Wenn es sich um einen Drehvorgang handelt, beenden Sie ihn.

UPDATE : OP hat nach Ausgabe in Datei gefragt. Sie können es mit Nethogs tun:

nethogs -d 1 eth0 > output.txt

-d gibt das Zeitintervall zwischen den Schreibvorgängen an ... damit Sie den obigen Befehl ausführen und das gewünschte Ergebnis erhalten können.

Laut UPDATE2 OP sind TCP und UDP erforderlich. Versuchen Sie dann, jnettop zu verwenden . Etwas älter, aber TCP und UDP. Es ist in deb / ubuntu erhältlich und ich denke, RHEL-Derivate. Beispiel:

jnettop --display text -t 5 --format CSV

Dies sollte zu einer Datei weiterleitbar sein.

Nummer 9
quelle
Ich stelle in der Frage klar, dass Nethogs nur TCP-Verbindungen unterstützt, und ich möchte eine Profilerstellung für eine Anwendung durchführen, die sowohl TCP als auch UDP verwendet
AymenDaoudi
Sie haben klar gesagt, "TCP und UDP wären großartig". Entschuldigung für meine Fehlinterpretation. Ich werde meine Antwort aktualisieren.
Nummer 9
@ number9 jnettop scheint interessant zu sein, wie auch immer die Ausgabe in eine Datei nicht fortgesetzt wird. Gibt es eine Möglichkeit, die Daten kontinuierlich zu protokollieren, solange ich meine profilierte Anwendung verwende, so wie die Daten kontinuierlich auf dem Bildschirm angezeigt werden?
AymenDaoudi
@ Nummer 9 Der Befehl jnettop zeigt auch keine PIDs an
AymenDaoudi