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.