Gibt es einen top-like Befehl, der die Netzwerkbandbreiten und Dateizugriffe von laufenden Prozessen anzeigt

31

Zum Beispiel möchten wir sehen:

PROCESS       IF       TX       RX       FILE(regular) R/W
prog1         eth0     200kB/s  12kB/s   --            --
              wlan0    12kB/s   100kB/s  --            --
              --       --       --       file1         R
              --       --       --       file2         R
              --       --       --       file3         W
prog2         eth0     0kB/s    200kB/s  --            --
              --       --       --       file4         W
              --       --       --       file5         W

Ist das möglich? nethogs zeigt nur den TX / RX an, während lsof nur die Dateizugriffe anzeigt.

Ich mache derzeit einen zweistufigen Prozess wie folgt:

sudo nethogs
sudo lsof -a -d 1-999 -c hogging_program /

Gibt es einen besseren Weg?

silvernightstar
quelle

Antworten:

5

Soweit ich weiß, nein. Was Sie erreichen möchten, ist die Möglichkeit, mehrere Befehle so zu kombinieren, wie Sie es gerade tun. Ich kenne jedoch keine anderen Apps, mit denen Sie Daten leichter analysieren können einzeiliger Textausgabemodus mit Pipeline). Mit einigen cleveren Shell-Skripten, weitergeleiteten Daten und ein wenig manueller Formatierung könnten Sie der gewünschten Ausgabe zumindest nahe kommen.

Ihre Suche nach etwas, das sowohl Netzwerk- als auch Dateistatistiken anzeigt - die von zwei verschiedenen Teilen des Betriebssystems bereitgestellt werden - scheint gegen einige Tenants von "The UNIX Philosophy:" zu bestehen.

  • Lassen Sie jedes Programm eine Sache gut machen. Um einen neuen Job zu erledigen, müssen Sie alte Programme neu erstellen, anstatt sie zu komplizieren, indem Sie neue Funktionen hinzufügen.
  • Erwarten Sie, dass die Ausgabe jedes Programms zur Eingabe eines anderen, noch unbekannten Programms wird. Überfüllen Sie die Ausgabe nicht mit irrelevanten Informationen.

Dies zeigt sich insbesondere in Programmen, die Text ausgeben, wie z. B. lsof. Normalerweise stellen * NIX-Konsolenprogramme nicht so viel Benutzeroberfläche zur Verfügung wie Daten, die in ein anderes Programm geleitet werden sollen, oder möglicherweise ein Skript, das Shell-Befehle wie cut verwendet , um eigene, speziell zugeschnittene Ausgaben zu erstellen.

Doug McIlroy fasste seine frühere Aussage Jahre später zusammen:

Schreiben Sie Programme, die eines können und es gut machen. Schreiben Sie Programme, um zusammenzuarbeiten. Schreiben Sie Programme, um Textströme zu verarbeiten, da dies eine universelle Schnittstelle ist.

Obwohl es Ihnen möglicherweise nicht hilft, die formatierte Ausgabe zu erhalten, die Sie suchen, ist The Art of UNIX Programming eine gute Lektüre, und ich habe Quellen für diese Zitate gefunden.

überverschrieben
quelle
7
Dies gibt keine Antwort auf die Frage.
Katze
Ist das möglich? - Ich glaube, was Sie erreichen wollen, ist wahrscheinlich am besten (und soweit ich weiß nur) möglich, mehrere Befehle so zu kombinieren, wie Sie es gerade tun. - Gibt es einen besseren Weg? Ich glaube, das, was Sie versuchen, ist wahrscheinlich das Beste und kann nur mehrere Befehle überzeugen. Mit einigen cleveren Shell-Skripten und Pipe-Daten könnten Sie die Ausgabe erhalten, die Sie suchen. - Welche Frage habe ich vermisst? Vielleicht lässt sich dies besser mit einer Erwähnung von Pipe-Shell-Skripten beantworten, aber in Ihrem hilfreichen Feedback wurde Folgendes nicht erwähnt: p ist die richtige Antwort für ein funktionierendes Skript?
overprescribed
Ich glaube, dass das, was Sie erreichen wollen, am besten als "eine Frage beantworten" beschrieben wird. nicht jemanden über Philosophie belehren.
Gardner Bickford
Ich werde die Antwort klarer in den Vordergrund stellen. Ohne die Philosophie-Lektion erfährt jedoch niemand, warum die Antwort nein ist, und kann ins Internet zurückkehren, ohne die weisen Worte von Linux Torvalds zu verstehen. "Die Linux - Philosophie lautet" Lache angesichts der Gefahr! " Ups. Falsch. "Mach es selbst." Das ist es."
overprescribed
17

Probieren Sie iftop für network und pidstat von sysstat aus .

Beides ist wahrscheinlich eine einfache Installation (apt-get usw.) für die Distribution Ihrer Wahl.

Jelle Foks
quelle
6

atopgibt Ihnen das, was Sie wollen, obwohl es nicht so spezifisch wäre, als ob Sie die E / A nach Dateihandle aufteilen würden. Um vollständige Netzwerkstatistiken zu erhalten, müssen Sie einen Kernel-Patch anwenden.

Flup
quelle
2

iptraf kann sehr nützlich sein und Bandbreitenfresser finden.

NinjaTec
quelle
5
Wenn Sie mehr Informationen / Erklärungen hinzufügen, wird Ihre Antwort besser.
MTK