Linux-Befehl nethogs
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:
- Überwachung auf Prozessebene: zeigt den Netzwerkverkehr jedes Prozesses direkt an
- Echtzeit-Aktualisierungen: aktualisiert die Daten standardmäßig jede Sekunde
- Keine Konfiguration erforderlich: funktioniert sofort, keine komplexe Einrichtung nötig
- Leichtgewichtig: geringer Ressourcenverbrauch, geeignet für Produktionsumgebungen
nethogs installieren
Ubuntu/Debian-Systeme
Beispiel
sudo apt-get install nethogs
CentOS/RHEL-Systeme
Beispiel
sudo yum install nethogs
Aus Quellcode kompilieren und installieren
Beispiel
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:
- PID: Prozess-ID
- USER: Der Benutzer, der den Prozess ausführt
- PROGRAM: Prozessname oder Befehlszeile
- DEV: Verwendete Netzwerkschnittstelle
- SENT: Daten-Senderate des Prozesses (KB/sec)
- 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
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:
- Prozesse mit abnormaler Netzwerkaktivität schnell identifizieren
- Überwachung der Bandbreitennutzung jedes Dienstes auf einem Server
- 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.
Andere Erweiterungen
Linux-Befehlsenzyklopädie