Gibt es eine Möglichkeit herauszufinden, welche Anwendung die meiste Bandbreite in Linux verwendet? [geschlossen]

56

Ich suche nach einem Dienstprogramm, das mir zeigt, wie viel Bandbreite jeder Prozess belegt. Es sollte nur die Daten drucken und beenden, da ich diese Liste in conky einspeisen möchte.

vava
quelle

Antworten:

71

Sie können NetHogs ausprobieren .

NetHogs ist ein kleines 'Net Top'-Tool. Anstatt den Datenverkehr nach Protokollen oder Subnetzen aufzuschlüsseln, gruppiert es die Bandbreite nach Prozessen , wie es die meisten Tools tun . NetHogs benötigt kein spezielles Kernelmodul, um geladen zu werden. Wenn plötzlich viel Netzwerkverkehr auftritt, können Sie NetHogs starten und sofort sehen, welche PID dies verursacht. Dies macht es einfach, Programme zu identifizieren, die wild geworden sind und plötzlich Ihre Bandbreite beanspruchen.

NetHogs_Screenshot

Milde
quelle
Fast genau das, was ich brauche, aber es funktioniert einfach nicht :(
vava
Was funktioniert nicht? Irgendwelche Fehler? Fängt es überhaupt nicht an? Konsolenausgabe?
Milde
es funktioniert nicht mit ipv6
zb '29.
Sie müssen es als root ausführen. Promiscous-Modus wird empfohlen. sudo nethogs -p eth2. Sie müssen Ihr Ethernet angeben, wenn es nicht standardmäßig eth0 ist.
Anandu M Das
@vava Es gibt ein Problem mit dem im Repo, es ist in 0.8.1 behoben, aber Sie müssen aus dem Quellcode erstellen (was extrem einfach ist). Siehe diesen Beitrag: askubuntu.com/questions/726601/…
Matthew
6

Es gibt durchaus ein paar aufgeführt hier .

Meine Favoriten bleiben jedoch iftop und tcpdump . Wireshark ist auch eine sehr gute Option.

BinaryMisfit
quelle
Ich habe ethische Probleme mit Wireshark, wenn nicht alleine im Netzwerk ... Es sei denn, Sie haben die Möglichkeit, nur den lokalen Host zu untersuchen. In diesem Fall interessiert mich das.
Gnoupi
5
Wenn Sie den Promiscuous-Modus nicht aktivieren, sollte nur an Ihren Host gerichteter Datenverkehr erfasst werden.
Amok
Keines dieser Dienstprogramme kann mir sagen, welche Prozesse die meiste Bandbreite verbrauchen und danach strebe ich.
Vava
5

Versuchen Sie atop ... um das Beste daraus zu machen, müssen Sie möglicherweise einige zusätzliche Kernel-Patches (I / O Accounting Patches) aktivieren.

Wenn dies atopnicht der Fall ist, geben Sie mit netstat -anp --inet(als Root) an, welche TCP / UDP-Ports von welchen Prozessen verwendet werden (oder möglicherweise lsofdafür). Von dort iterieren Sie einfach über jeden Prozess, der einen offenen Socket hat, und hängen Sie ihn entweder mit ltrace -Soder stracean, um die Lese-, Schreib-, Sende- und Empfangsdaten zu überprüfen, oder verwenden Sie tcpdumpeinen Filter, der Ihre lokale (n) IP-Adresse (n) und die TCP / UDP-Ports angibt das waren aufgelistet.

atopist sicherlich die bequemste von diesen ... wenn Sie es und die notwendige Kernel-Unterstützung installiert haben. In der Vergangenheit hatten Kunden und Arbeitgeber spezielle Systeme (die sich von ihren Produktionsimages unterscheiden) eingerichtet, um die E / A-Profilerstellung mithilfe von zu unterstützen atop. Diese anderen Techniken werden Sie jedoch dorthin bringen.

Ich bin sicher, wir könnten auch etwas mit SystemTap machen ... aber ich kenne keine einfachen vorgekochten Rezepte dafür. SystemTap ist in hohem Maße ein Programmieranalysetool.

Jim Dennis
quelle
Wenn Sie nur wissen möchten, welcher Prozess das Netzwerk netstat -anp --inetRecv-QSend-Q
überlastet