23 votes

Sur Linux, comment puis-je savoir quel processus envoie des paquets Ethernet ?

Je cours gkrellm qui montre qu'un processus sur mon système Debian Linux écrit environ 500 Ko/s sur eth0. J'aimerais savoir quel processus c'est. Je connais un peu netstat, mais il montre une tonne de connexions TCP ouvertes et je ne semble pas pouvoir obtenir d'informations sur le trafic.

Est-ce que quelqu'un sait comment je peux obtenir une liste des processus qui utilisent effectivement l'interface eth0 afin que je puisse retrouver le fautif?


SUIVI : La distribution Debian Linux contient un package nethogs qui résout définitivement ce problème. Les outils connexes qui ne sont pas tout à fait à la hauteur incluent iftop, netstat et lsof.

0 votes

iptraf est bon

0 votes

Cela a fonctionné pour moi pour les échanges UDP de très courte durée: serverfault.com/a/683327/119360

23voto

Janne Pikkarainen Points 31244

Je préfère nethogs. C'est un petit programme console basé sur ncurses qui affiche de manière pratique l'état du trafic réseau par processus.

19voto

84104 Points 12538

netstat -ptu vous donnera les identifiants de processus propriétaires (ainsi que les informations standard de netstat) pour toutes les connexions tcp et udp. (Les utilisateurs normaux ne pourront pas identifier tous les processus.)

Si quelque chose envoie beaucoup de trafic constant, vous devriez le voir sur les colonnes Recv-Q ou Send-Q respectivement 2 et 3.

Exemples:
Recv-Q
sudo watch -n .1 'netstat -tup | grep -E "^[tc,ud]p[6]{0,1}" | sort -nr -k2'

Send-Q
sudo watch -n .1 'netstat -tup | grep -E "^[tc,ud]p[6]{0,1}" | sort -nr -k3'

Si vous soupçonnez qu'un processus est déclenché par un autre processus ps axf.

0 votes

(Noter que le drapeau -u est nécessaire si vous savez que vous recherchez des connexions TCP.)

5voto

gdurham Points 879

Une opération plus manuelle si vous recherchez simplement un processus d'envoi/réception de données serait d'exécuter la commande lsof. Cela listera tous les fichiers ouverts pour chaque processus, ce qui inclura les connexions réseau car ce sont des descripteurs de fichiers pour le système d'exploitation.

Je ne suis pas sûr que ce soit ce que vous recherchez.

4voto

David Schwartz Points 31009

Installer iftop (basé sur du texte simple) ou ntop (graphique).

1 votes

Le code iftop affiche uniquement l'utilisation de la bande passante sur une interface.

0 votes

Cela montre bien plus que ça. Par défaut, cela le divise par hôte.

0 votes

Peut-il répertorier tous les processus qui utilisent une interface? Si oui, pourriez-vous s'il vous plaît nous montrer la commande et les options?

3voto

quanta Points 49664

Utilisez tcpdump pour renifler quelques paquets sur cette interface :

# tcpdump -vv -s0 -i eth0 -c 100 -w /tmp/eth0.pcap

Copiez sur le client et ouvrez avec Wireshark pour voir ce qui se passe.

0 votes

Ce n'est pas la manière la plus simple d'obtenir des statistiques simples, mais pour quelque chose de légèrement plus compliqué, Wireshark brillera!

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X