Sous Linux, comment savoir quel processus envoie des paquets Ethernet?

18

J'utilise gkrellm, ce qui montre qu'un processus sur mon système Debian Linux écrit environ 500 Ko / s dans eth0. J'aimerais savoir de quel processus il s'agit. Je connais un peu Netstat, mais cela montre un gazillion de connexions TCP ouvertes et je n'arrive pas à lui faire produire des informations sur le trafic.

Quelqu'un sait-il comment obtenir une liste des processus qui utilisent réellement l'interface eth0 pour que je puisse retrouver le contrevenant?


SUIVI : La distribution Debian Linux contient un nethogspaquet qui résout définitivement ce problème. Les outils connexes qui ne sont pas tout à fait sur la marque comprennent iftop, netstatet lsof.

Norman Ramsey
la source
iptrafest bon
Luv33preet
Cela a fonctionné pour moi pour les échanges UDP de très courte durée: serverfault.com/a/683327/119360
Luc

Réponses:

16

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

Janne Pikkarainen
la source
18

netstat -ptuvous donnera les identifiants du processus propriétaire (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 une bonne quantité de trafic constant, vous devriez le voir sur Recv-Qou dans les Send-Qcolonnes 2 et 3 respectivement.

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

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

Si vous pensez que ce processus est déclenché par un autre processus ps axf.

84104
la source
(Pas que le drapeau -u soit nécessaire si vous savez que vous recherchez des connexions TCP.)
andol
5

Une opération plus manuelle si vous recherchez uniquement un processus d'envoi / réception de données serait d'exécuter la lsofcommande. Cela répertoriera tous les fichiers ouverts pour chaque processus qui comprendra les connexions réseau car ils sont des descripteurs de fichiers pour le système d'exploitation.

Je ne sais pas si c'est ce que vous recherchez.

gdurham
la source
4

Installez iftop(texte simple) ou ntop(graphique).

David Schwartz
la source
1
iftopaffiche uniquement l'utilisation de la bande passante sur une interface.
quanta
Cela montre bien plus que cela. Par défaut, il le décompose par hôte.
David Schwartz
Peut-il répertorier tous les processus utilisant une interface? Si oui, pourriez-vous nous montrer la commande et les options?
quanta
1
Pas directement. Mais une fois que vous avez trouvé l'hôte, vous pouvez trouver le processus, par exemple avec netstat -pn.
David Schwartz
3

Utilisez tcpdumppour flairer certains 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.

quanta
la source
Ce n'est pas le moyen le plus simple d'obtenir des statistiques simples, mais tout ce qui est encore un peu plus compliqué et wireShark brillera!
Silverfire