Linux-Befehl nethogs

Linux 命令大全Linux-Befehlsenzyklopädie


nethogs ist ein Open-Source-Linux-Kommandozeilenwerkzeug, das verwendet wird, um die Netzwerkbandbreitennutzung in Echtzeit pro Prozess zu überwachen. Im Gegensatz zu traditionellen Netzwerküberwachungswerkzeugen (wie iftop) misst nethogs den Datenverkehr nicht anhand von Ports oder Protokollen; stattdessen zeigt es direkt die Netzwerkaktivität jedes Prozesses an.


Warum nethogs verwenden

Auf Linux-Systemen müssen Administratoren bei Netzwerkanomalien typischerweise schnell erkennen, welcher Prozess eine große Menge Bandbreite verbraucht. nethogs bietet die folgenden Vorteile:

  1. Überwachung auf Prozessebene: zeigt den Netzwerkverkehr jedes Prozesses direkt an
  2. Echtzeit-Aktualisierungen: aktualisiert die Daten standardmäßig jede Sekunde
  3. Keine Konfiguration erforderlich: funktioniert sofort, keine komplexe Einrichtung nötig
  4. Leichtgewichtig: geringer Ressourcenverbrauch, geeignet für Produktionsumgebungen

nethogs installieren

Ubuntu/Debian-Systeme

Beispiel

sudo apt-get update
sudo apt-get install nethogs

CentOS/RHEL-Systeme

Beispiel

sudo yum install epel-release
sudo yum install nethogs

Aus Quellcode kompilieren und installieren

Beispiel

git clone https://github.com/raboof/nethogs
cd nethogs
make && sudo make install

Grundlegende Verwendung

Alle Netzwerkschnittstellen überwachen

sudo nethogs

Beispielausgabe:

PID   USER    PROGRAM              DEV        SENT      RECEIVED
1234  root    /usr/bin/ssh         eth0      12.456    5.678 KB/sec
5678  bob     /usr/bin/firefox     wlan0     45.789    32.123 KB/sec

Eine bestimmte Netzwerkschnittstelle überwachen

sudo nethogs eth0

Einstellung des Aktualisierungsintervalls (Sekunden)

sudo nethogs -d 5  # 每5秒刷新一次

Allgemeine Befehlsoptionen

Option Beschreibung
-d Aktualisierungsintervallzeit festlegen (s)
-c Nach einer angegebenen Anzahl von Aktualisierungen beenden
-t Trace-Modus (zeigt kumulierten Datenverkehr an)
-p Promiscuous-Modus (lauscht auf den gesamten Datenverkehr)
-V Versionsinformationen anzeigen
-h Hilfeinformationen anzeigen

Erweiterte Nutzung

1. Einen bestimmten Prozess verfolgen

sudo nethogs -p | grep "进程名"

2. Überwachungsergebnisse in einer Datei speichern

sudo nethogs -t > network_log.txt

3. Prozesse eines bestimmten Benutzers überwachen

sudo nethogs -u username

4. Optionen kombinieren

sudo nethogs -d 10 -c 6 eth0  # 每10秒刷新一次,共刷新6次后退出

Erklärung der Ausgabefelder

Die nethogs-Ausgabe enthält folgende wichtige Informationen:

  1. PID: Prozess-ID
  2. USER: Der Benutzer, der den Prozess ausführt
  3. PROGRAM: Prozessname oder Befehlszeile
  4. DEV: Verwendete Netzwerkschnittstelle
  5. SENT: Daten-Senderate des Prozesses (KB/sec)
  6. RECEIVED: Datenempfangsrate des Prozesses (KB/sec)

Praktische Anwendungsszenarien

Szenario 1: Langsame Netzwerkprobleme diagnostizieren

sudo nethogs

Identifizieren Sie schnell die Quelle des Problems, indem Sie prüfen, welcher Prozess die meiste Bandbreite belegt.

Szenario 2: Abnormalen Serververkehr überwachen

sudo nethogs -d 30 -c 12 > /var/log/nethogs.log

Zeichnen Sie alle 30 Sekunden einmal auf und erfassen Sie insgesamt 6 Minuten Netzwerkaktivität.

Szenario 3: Bandbreite für einen bestimmten Prozess begrenzen

Beispiel

# Verwenden Sie zuerst nethogs, um Prozesse mit hohem Datenverkehr zu finden
sudo nethogs

# Verwenden Sie dann tc oder wondershaper, um die Bandbreite zu begrenzen
sudo wondershaper eth0 1024 512  # Upload auf 1024Kbps begrenzen, Download auf 512Kbps

Problemlösungen

Problem 1: Unzureichende Berechtigungen

Error: opening device eth0: Operation not permitted

Lösung: Führen Sie nethogs mit sudo oder als root-Benutzer aus.

Problem 2: Prozessname kann nicht ermittelt werden

PID   USER    PROGRAM              DEV        SENT      RECEIVED
1234  -       -                    eth0      12.456    5.678 KB/sec

Lösung: Der Prozess wurde möglicherweise beendet, oder nethogs verfügt nicht über ausreichende Berechtigungen, um Prozessinformationen abzurufen.

Problem 3: Bestimmte Netzwerkschnittstelle wird nicht unterstützt

Error: No such device exists (device_name)

Lösung: Verwenden Sie denifconfigoderip aBefehl, um den korrekten Schnittstellennamen zu bestätigen.


Vergleich alternativer Tools

Tool Funktionen Geeignete Szenarien
nethogs Zeigt Datenverkehr nach Prozess an Problematische Prozesse schnell lokalisieren
iftop Zeigt Datenverkehr nach Verbindung an Bestimmte Netzwerkverbindungen analysieren
nload Zeigt den Gesamtdatenverkehr pro Schnittstelle an Gesamte Bandbreitennutzung überwachen
bmon Grafische Oberfläche Datenverkehrstrends visuell anzeigen

Zusammenfassung

nethogs ist ein unverzichtbares Netzwerkdiagnosewerkzeug im Werkzeugkasten eines Linux-Systemadministrators und besonders geeignet für:

  1. Prozesse mit abnormaler Netzwerkaktivität schnell identifizieren
  2. Überwachung der Bandbreitennutzung jedes Dienstes auf einem Server
  3. Fehlerbehebung bei Netzwerkleistungsproblemen

Mit der in diesem Artikel vorgestellten grundlegenden Verwendung und den fortgeschrittenen Techniken sollten Sie in der Lage sein, nethogs sicher zu verwenden, um den Netzwerkverkehr des Systems zu überwachen und zu verwalten.


Linux 命令大全Linux-Befehlsenzyklopädie

Andere Erweiterungen