Existe-t-il une commande de type supérieur qui affiche les bandes passantes réseau et les accès aux fichiers des processus en cours


31

Par exemple, nous aimerions voir:

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

Est-ce possible? nethogs n'affiche que le TX / RX, tandis que lsof n'affiche que les accès aux fichiers.

Je fais actuellement un processus en 2 étapes comme ceci:

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

Y a-t-il un meilleur moyen?

Réponses:


5

Pour autant que je sache, non. Ce que vous essayez d'accomplir est possible de combiner plusieurs commandes comme vous le faites actuellement, bien que je ne connaisse pas d'autres applications qui vous fourniraient des données plus faciles à analyser (ndlr: une autre réponse a suggéré iftop que je ne connaissais pas a ajouté un mode de sortie de texte sur une seule ligne avec tuyau). Avec des scripts shell intelligents, des données canalisées et un peu de formatage manuel, vous pourriez au moins vous rapprocher de la sortie que vous recherchez.

Votre recherche de quelque chose qui montre à la fois des statistiques de réseau et de fichiers - qui seraient fournies par deux parties différentes du système d'exploitation - semble se heurter à certains locataires de «The UNIX Philosophy:»

  • Faites bien à chaque programme une chose. Pour faire un nouveau travail, construisez à nouveau plutôt que de compliquer les anciens programmes en ajoutant de nouvelles fonctionnalités.
  • Attendez-vous à ce que la sortie de chaque programme devienne l'entrée d'un autre programme, encore inconnu. N'encombrez pas la sortie avec des informations étrangères.

Cela est particulièrement évident dans les programmes qui produisent du texte, comme lsof. Vous ne voyez généralement pas de programmes de console * NIX fournissant une interface utilisateur autant que des données à transférer dans un autre programme, ou éventuellement un script utilisant des commandes shell comme cut pour créer leurs propres sorties spécialement adaptées.

Doug McIlroy a résumé sa déclaration antérieure des années plus tard:

Écrivez des programmes qui font une chose et le font bien. Écrivez des programmes pour travailler ensemble. Écrivez des programmes pour gérer les flux de texte, car il s'agit d'une interface universelle.

Bien que cela ne puisse pas vous aider à obtenir la sortie formatée que vous recherchez, The Art of UNIX Programming est une bonne lecture, et où j'ai trouvé des sources pour ces citations.


7
Cela ne fournit pas de réponse à la question.
cat

Est-ce possible? - Je crois que ce que vous essayez d'accomplir est probablement le meilleur (et pour autant que je sache seulement) en combinant plusieurs commandes comme vous le faites actuellement. - y a-t-il une meilleure façon? Je crois que ce que vous essayez est probablement le meilleur et seulement possible de convaincre plusieurs commandes ... avec des scripts shell intelligents et des données canalisées, vous pouvez obtenir la sortie [formatée de la manière] que vous recherchez. - quelle question ai-je manquée? il serait peut-être préférable de répondre avec une mention de scripts shell piped, mais vos commentaires utiles ne mentionnaient pas que: p est la bonne réponse un script de travail?
surprescrit le

Je crois que ce que vous essayez d'accomplir est probablement mieux décrit comme «répondre à une question»; pas enseigner la philosophie à quelqu'un.
Gardner Bickford

Je ne mettrai pas la réponse plus clairement en haut. Sans leçon de philosophie, cependant, personne ne comprend pourquoi la réponse est non, et peut revenir sur Internet, sans jamais comprendre les sages paroles de Linux Torvalds; "La philosophie Linux est 'Riez face au danger!' Oups. Faux. "Faites-le vous-même." C'est ça."
surprescrit le

17

Essayez iftop pour le réseau et pidstat depuis sysstat .

Les deux sont probablement une installation facile (apt-get, etc.) pour la distribution de votre choix.


6

atopva en quelque sorte vous donner ce que vous voulez, bien que ce ne soit pas aussi spécifique que de décomposer les E / S par descripteur de fichier. Pour obtenir des statistiques complètes de mise en réseau, vous devez appliquer un correctif du noyau.


2

iptraf peut être très utile et trouver des porcs de bande passante.


5
L'ajout d'informations / d'explications améliorera votre réponse.
mtk
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.