bandwhich - Pro-Prozess-Bandbreiten-Monitor Spickzettel
bandwhich ist ein Rust-Terminal-Hilfsprogramm, das die aktuelle Netzwerkauslastung aufgeschlüsselt nach Prozess, Verbindung und Remote-IP/Hostname anzeigt. Im Gegensatz zu iftop (pro Verbindung) oder nethogs (nur pro Prozess) korreliert bandwhich Sockets mit dem besitzenden Prozess und löst Remote-Endpunkte auf, sodass du sofort siehst, welche App — und welcher Remote-Host — Bandbreite verbraucht.
Installation
| Plattform | Befehl |
|---|
| Cargo (alle Plattformen) | cargo install bandwhich |
| Arch Linux | sudo pacman -S bandwhich |
| Debian/Ubuntu | sudo apt install bandwhich |
| Fedora | sudo dnf install bandwhich |
| macOS (Homebrew) | brew install bandwhich |
| Nix | nix-env -iA nixpkgs.bandwhich |
| Vorkompiliertes Binary | Von der GitHub-Releases-Seite herunterladen |
Berechtigungen
bandwhich muss Pakete abfangen, daher benötigt es erhöhte Fähigkeiten:
# Einfachste Methode: mit sudo ausführen
sudo bandwhich
# Oder gib dem Binary einmalig Fähigkeiten (danach kein sudo mehr, Linux)
sudo setcap cap_net_raw,cap_net_admin=eip $(which bandwhich)
Grundlegende Verwendung
| Befehl | Beschreibung |
|---|
sudo bandwhich | Überwache alle Schnittstellen, Live-TUI |
sudo bandwhich -i eth0 | Überwache eine einzelne Schnittstelle |
sudo bandwhich --interface wlan0 | Gleiche, lange Form |
bandwhich --help | Vollständige Optionsliste |
bandwhich --version | Version |
Wichtige Optionen
| Option | Beschreibung |
|---|
-i, --interface NAME | Überwachung auf eine Schnittstelle beschränken |
-n, --no-resolve | Reverse-DNS-Lookups überspringen (schneller, rohe IPs) |
-r, --raw | Maschinenlesbares, nicht-interaktives Ausgabeformat (gut zum Protokollieren) |
-p, --processes | Zeige nur die Prozess-Tabelle |
-c, --connections | Zeige nur die Verbindungs-Tabelle |
-a, --addresses | Zeige nur die Remote-Adressen-Tabelle |
--total-utilization | Einmalige Gesamtauslastung drucken, statt der Live-UI |
-s, --show-dns | DNS-Abfragen in der Verbindungsansicht einschließen |
-d, --dns-server IP | Einen bestimmten Resolver für Reverse-Lookups verwenden |
Interaktive Tasten
| Taste | Aktion |
|---|
Tab | Layout-Zyklus / drehe die erweiterte Tabelle |
Space | Pausieren / Aktualisierungen fortsetzen |
↑ / ↓ | Innerhalb einer Tabelle scrollen |
q / Ctrl+C | Beenden |
Anzeige lesen
bandwhich zeigt drei Live-Tabellen:
| Tabelle | Sagt dir |
|---|
| Auslastung nach Prozess | Welche ausführbaren Dateien senden/empfangen, mit Auf-/Ab-Raten |
| Verbindungen | Jeder Socket: lokal → remote, Protokoll und pro-Verbindungs-Rate |
| Auslastung nach Remote-Adresse | Welche Remote-Hosts (aufgelöst) tauschen die meisten Daten aus |
Raten werden als aktueller Upload (▲) und Download (▼) Durchsatz angezeigt, etwa einmal pro Sekunde aktualisiert.
Häufige Workflows
# "Was frisst gerade meinen Upload?" — nur Prozesse, kein DNS-Verzögerung
sudo bandwhich -p -n
# Untersuche eine laute Schnittstelle und protokolliere einen Raw-Stream für spätere Analyse
sudo bandwhich -i eth0 --raw | tee bandwhich-eth0.log
# Einmalige Momentaufnahme der Gesamtauslastung (Skripte/Cron)
sudo bandwhich --total-utilization -n
# Finde die Top-Remote-Sprecher (z.B. einen Datenabfluss oder Sicherungsauftrag)
sudo bandwhich -a
bandwhich vs andere Netzwerk-Monitore
| Werkzeug | Granularität | Notizen |
|---|
| bandwhich | Prozess + Verbindung + Remote-Host | Rust-TUI, löst Remotes auf |
| nethogs | Pro Prozess | Keine Remote-Host-Gruppierung |
| iftop | Pro Verbindung | Keine Prozess-Zuordnung |
| nload | Pro Schnittstelle gesamt | Einfaches Aggregat-Diagramm |
| iptraf-ng | Pro Schnittstelle/Verbindung | Ältere ncurses-Suite |
Ressourcen