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.


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.


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.


(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.


4

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


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.


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
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.