No Linux, como posso saber qual processo está enviando pacotes Ethernet?

18

Estou executando o gkrellm, que mostra que algum processo no meu sistema Debian Linux está escrevendo aproximadamente 500KB / s para eth0. Eu gostaria de descobrir qual processo é. Eu sei um pouco sobre o netstat, mas ele mostra um zilhão de conexões TCP abertas e não consigo fazer com que ele produza qualquer informação sobre o tráfego.

Alguém sabe como posso obter uma lista de processos que estão realmente usando a interface eth0 para que eu possa rastrear o ofensor?

FOLLOWUP : A distribuição Debian Linux contém um pacote nethogs que resolve este problema definitivamente. Ferramentas relacionadas que não estão bem na marca incluem iftop , netstat e lsof .

    
por Norman Ramsey 29.09.2011 / 04:26

5 respostas

16

Eu prefiro nethogs . É um pequeno programa de console baseado em ncurses que exibe o status do tráfego de rede por processo de uma maneira conveniente.

    
por 19.10.2011 / 11:20
18

netstat -ptu dará a você os IDs de processo proprietários (juntamente com informações padrão do netstat) para todas as conexões tcp e udp. (Usuários normais não poderão identificar todos os processos.)

Se algo estiver enviando uma quantidade razoável de tráfego constante, você deverá vê-lo em Recv-Q ou Send-Q colunas 2 e 3, respectivamente.

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

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

Se você suspeitar que esse processo está sendo acionado por outro processo ps axf .

    
por 29.09.2011 / 08:10
5

Uma operação mais manual se você estiver procurando apenas por um processo de envio / recebimento de dados seria executar o comando lsof . Isso listará todos os arquivos abertos para cada processo, que incluirão conexões de rede, pois são descritores de arquivos para o.s.

Não tenho certeza se é isso que você está procurando.

    
por 29.09.2011 / 06:28
4

Instale iftop (baseado em texto simples) ou ntop (gráfico).

    
por 29.09.2011 / 04:34
3

Use tcpdump para capturar alguns pacotes nessa interface:

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

Copie para o cliente e abra com o Wireshark para ver o que acontece.

    
por 29.09.2011 / 04:30