Su Linux, come posso sapere quale processo sta inviando i pacchetti Ethernet?


18

Sto eseguendo gkrellm, il che dimostra che alcuni processi sul mio sistema Debian Linux scrivono su eth0 circa 500 KB / s. Vorrei scoprire quale processo è. Conosco un po 'di netstat, ma mostra un gazillion di connessioni TCP aperte e non riesco a farlo produrre alcuna informazione sul traffico.

Qualcuno sa come posso ottenere un elenco di processi che stanno effettivamente utilizzando l'interfaccia eth0 in modo da poter rintracciare l'autore del reato?


FOLLOWUP : La distribuzione Debian Linux contiene un nethogspacchetto che risolve definitivamente questo problema. Strumenti correlati che non sono del tutto sul marchio comprendono iftop, netstate lsof.


iptrafè buono
— Luv33preet

Questo ha funzionato per me per scambi UDP di breve durata: serverfault.com/a/683327/119360
— Luc

Risposte:


16

Preferisco i nethogs . È un piccolo programma console basato su ncurses che mostra lo stato del traffico di rete per processo in modo conveniente.


18

netstat -ptuti fornirà gli ID di processo proprietari (insieme alle informazioni standard di netstat) per tutte le connessioni tcp e udp. (Gli utenti normali non saranno in grado di identificare tutti i processi.)

Se qualcosa è l'invio di una discreta quantità di traffico costante si dovrebbe vedere su Recv-Qo Send-Qcolonne 2 e 3, rispettivamente.

Esempi:
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'

Se sospetti che quel processo sia attivato da un altro processo ps axf.


(Non che il flag -u sia necessario se sai che stai cercando connessioni TCP.)
— andol

5

Un'operazione più manuale se stai cercando solo un processo di invio / ricezione dei dati sarebbe quella di eseguire il lsofcomando. Questo elencherà tutti i file aperti per ogni processo che includeranno connessioni di rete in quanto descrittori di file per il sistema operativo

Non sono sicuro se questo è quello che stai cercando.


4

Installa iftop(semplice testo) o ntop(grafico).


1
iftopvisualizza solo l'utilizzo della larghezza di banda su un'interfaccia.
— quanta

Mostra molto di più. Per impostazione predefinita, la suddivide per host.
— David Schwartz,

Può elencare tutti i processi che utilizzano un'interfaccia? In tal caso, potresti mostrarci il comando e le opzioni?
— quanti

1
Non direttamente Ma una volta trovato l'host, è possibile trovare il processo, ad esempio con netstat -pn.
— David Schwartz,

3

Utilizzare tcpdumpper annusare alcuni pacchetti su questa interfaccia:

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

Copia sul client e apri con Wireshark per vedere cosa succede.


Non è il modo più semplice per ottenere statistiche semplici, ma qualsiasi cosa è anche leggermente più complicata e WireShark brillerà!
— Silverfire,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.