Existe uma maneira de descobrir qual aplicativo está usando a maior parte da largura de banda no Linux? [fechadas]

56

Estou procurando um utilitário que possa me mostrar quanto de largura de banda cada processo está usando. Ele deve apenas imprimir os dados e sair conforme eu quiser alimentar essa lista no conky.

vava
fonte

Respostas:

71

Você pode experimentar o NetHogs .

O NetHogs é uma pequena ferramenta 'net top'. Em vez de dividir o tráfego por protocolo ou sub-rede, como a maioria das ferramentas, agrupa a largura de banda por processo . O NetHogs não depende de um módulo de kernel especial para ser carregado. Se de repente houver muito tráfego de rede, você poderá ativar o NetHogs e ver imediatamente qual PID está causando isso. Isso facilita a identificação de programas que foram malucos e estão subitamente ocupando sua largura de banda.

NetHogs_Screenshot

Milde
fonte
Quase exatamente o que eu preciso, mas ele simplesmente não funciona :(
vava
Bem, o que não funciona? Algum erro? Não começa? Saída do console?
Milde
ele não funciona com o ipv6
zb '
Você precisa executá-lo como root. O modo promíscuo é recomendado. sudo nethogs -p eth2. Você deve especificar sua ethernet se não for eth0 por padrão.
Anandu M Das
@vava Há um problema com o do repositório, ele foi corrigido na 0.8.1, mas você precisa criar a partir da fonte (o que é extremamente fácil). Veja esta publicação: askubuntu.com/questions/726601/…
Matthew
6

Existem alguns listados aqui .

Meus favoritos, no entanto, permanecem iftop e tcpdump . O Wireshark também é uma opção muito boa.

BinaryMisfit
fonte
Eu tenho problemas éticos com o Wireshark, se não estiver sozinho na rede ... A menos que você tenha uma maneira de fazer com que ele verifique apenas o host local, nesse caso, estou interessado.
Gnoupi
5
Se você não ativar o modo promíscuo, ele deverá capturar apenas o tráfego direcionado ao seu host.
314/09 Amok
Ah, nenhum desses utilitários pode me dizer qual processo está usando mais largura de banda e é isso que eu estou procurando.
vava
5

Tente atop ... para tirar o máximo proveito disso, talvez seja necessário ativar alguns patches adicionais do kernel (patches de contabilidade de E / S).

Se atopnão for uma opção, use netstat -anp --inet(como root) para fornecer uma lista de quais portas TCP / UDP estão sendo usadas por quais processos (ou possivelmente lsofpara isso). A partir daí, basta percorrer cada processo que possui um soquete aberto e anexá-lo usando ltrace -Sou stracepara olhar para as leituras, gravações, envios e recebimentos ou use tcpdumpcom um filtro que especifique o (s) seu (s) endereço (s) IP (s) local (is) e as portas TCP / UDP que foram listados.

atopé certamente o mais conveniente deles ... se você o tiver e o suporte necessário ao kernel instalado. No passado, clientes e empregadores configuraram sistemas especiais (diferentes das imagens de produção) com o único objetivo de oferecer suporte ao perfil de E / S usando atop. No entanto, essas outras técnicas o levarão até lá.

Tenho certeza de que também poderíamos fazer algo usando o SystemTap ... mas não conheço nenhuma receita pré-cozida fácil para fazer isso. O SystemTap é uma ferramenta de análise de programação.

Jim Dennis
fonte
se você só quer saber qual processo está monopolizando a rede, não a largura de banda real, usado, você pode apenas usar netstat -anp --inete verificar o Recv-Qe Send-Qcolunas
Golimar