Existe-t-il un moyen de déterminer quelle application utilisant le plus de bande passante sous Linux? [fermé]

56

Je cherche un utilitaire qui pourrait me montrer la quantité de bande passante utilisée par chaque processus. Il devrait simplement imprimer les données et quitter car je veux alimenter cette liste avec conky.

vava
la source

Réponses:

71

Vous pouvez essayer NetHogs .

NetHogs est un petit outil "top net". Au lieu de répartir le trafic par protocole ou par sous-réseau, comme le font la plupart des outils, il regroupe la bande passante par processus . NetHogs ne compte pas sur un module de noyau spécial pour être chargé. S'il y a soudainement beaucoup de trafic réseau, vous pouvez lancer NetHogs et voir immédiatement quel PID est la cause. Cela facilite l'identification des programmes qui se sont déchaînés et qui prennent soudainement votre bande passante.

NetHogs_Screenshot

Milde
la source
Presque exactement ce dont j'ai besoin mais cela ne fonctionne tout simplement pas :(
vava
Eh bien, qu'est-ce qui ne marche pas? Des erreurs? Ça ne commence pas du tout? Sortie de la console?
Milde
ça ne marche pas avec ipv6
zb '29
Vous devez l'exécuter en tant que root. Le mode promiscous est recommandé. sudo nethogs -p eth2. Vous devez spécifier votre ethernet s'il ne s'agit pas de eth0 par défaut.
Anandu M Das
@vava Il y a un problème avec celui du rapport, il est corrigé dans la version 0.8.1 mais vous devez construire à partir du source (ce qui est extrêmement facile). Voir ce post: askubuntu.com/questions/726601/…
Matthew
6

Il y en a pas mal énumérés ici .

Mes favoris restent cependant iftop et tcpdump . Wireshark est également une très bonne option.

BinaryMisfit
la source
J'ai des problèmes d'éthique avec Wireshark, si ce n'est seul sur le réseau ... Sauf si vous avez un moyen de le faire sonder uniquement l'hôte local, auquel cas je suis intéressé.
Gnoupi
5
Si vous n'activez pas le mode promiscuous, il ne devrait capturer que le trafic dirigé vers votre hôte.
Amok
Eh bien, aucun de ces utilitaires ne peut me dire quel processus utilise le plus de bande passante et c'est ce que je recherche.
vava
5

Essayez atop ... pour en tirer le meilleur parti, vous devrez peut-être activer certains correctifs supplémentaires dans le noyau (correctifs de comptabilité d'E / S).

Si ce atopn'est pas une option, utilisez netstat -anp --inet(en tant que root) pour fournir une liste des ports TCP / UDP utilisés par quels processus (ou éventuellement lsofpour cela). À partir de là, parcourez simplement chaque processus qui contient un socket ouvert et attachez-le ltrace -Sou utilisez -le stracepour consulter les lectures, écritures, envois et réceptions, ou utilisez-le tcpdumpavec un filtre spécifiant votre adresse IP locale et les ports TCP / UDP. qui ont été énumérés.

atopest certainement le plus pratique de ceux-ci ... si vous l’avez et le support de noyau nécessaire installé. Dans le passé, des clients et des employeurs avaient mis en place des systèmes spéciaux (différents de leurs images de production) dans le seul but de prendre en charge le profilage d'E / S à l'aide de atop. Cependant, ces autres techniques vous y mèneront.

Je suis sûr que nous pourrions aussi faire quelque chose en utilisant SystemTap ... mais je ne connais aucune recette précuite facile à utiliser pour cela. SystemTap est vraiment un outil d'analyse de programmation.

Jim Dennis
la source
si vous voulez juste savoir quel processus monopolise le réseau et non la bande passante réelle utilisée, vous pouvez simplement utiliser netstat -anp --inetet vérifier les colonnes Recv-QetSend-Q
golimar