Existe um comando top-like que mostra as larguras de banda da rede e os acessos a arquivos dos processos em execução

31

Por exemplo, gostaríamos de ver:

PROCESS       IF       TX       RX       FILE(regular) R/W
prog1         eth0     200kB/s  12kB/s   --            --
              wlan0    12kB/s   100kB/s  --            --
              --       --       --       file1         R
              --       --       --       file2         R
              --       --       --       file3         W
prog2         eth0     0kB/s    200kB/s  --            --
              --       --       --       file4         W
              --       --       --       file5         W

Isso é possível? nethogs mostra apenas o TX / RX, enquanto lsof mostra apenas os acessos ao arquivo.

No momento, estou fazendo um processo em duas etapas, assim:

sudo nethogs
sudo lsof -a -d 1-999 -c hogging_program /

Existe uma maneira melhor?

silvernightstar
fonte

Respostas:

5

Tanto quanto eu sei, não. O que você está tentando realizar é possível combinando vários comandos como está fazendo no momento, embora eu não conheça outros aplicativos que forneceriam dados mais fáceis de analisar (ed: outra resposta sugerida, iftop, que eu não sabia, adicionou um modo de saída de texto de linha única capaz de canalizar). Com alguns scripts inteligentes de shell, dados canalizados e um pouco de formatação manual, você pode obter pelo menos perto da saída que está procurando.

Sua pesquisa por algo que mostre estatísticas de rede e de arquivos - que seria fornecida por duas partes diferentes do sistema operacional - parece estar contra alguns inquilinos de 'The UNIX Philosophy:'

  • Faça com que cada programa faça uma coisa bem. Para fazer um novo trabalho, construa novamente, em vez de complicar programas antigos, adicionando novos recursos.
  • Espere que a saída de cada programa se torne a entrada para outro programa ainda desconhecido. Não desorganize a saída com informações estranhas.

Isso é particularmente evidente em programas que produzem texto, como lsof. Geralmente, você não vê os programas do console * NIX fornecendo uma interface com o usuário tanto quanto os dados a serem canalizados para outro programa, ou possivelmente um script utilizando comandos do shell como cut para criar suas próprias saídas personalizadas.

Doug McIlroy resumiu sua declaração anterior anos depois:

Escreva programas que fazem uma coisa e fazem bem. Escreva programas para trabalhar juntos. Escreva programas para lidar com fluxos de texto, porque essa é uma interface universal.

Embora possa não ajudar você a obter a saída formatada que está procurando, a Arte da programação UNIX é uma boa leitura e foi onde encontrei fontes para essas citações.

sobrescrito
fonte
7
Isso não fornece uma resposta para a pergunta.
cat
Isso é possível? - Acredito que o que você está tentando realizar é provavelmente o melhor (e até onde eu sei) possível combinar vários comandos como você está fazendo atualmente. -- Existe uma maneira melhor? Acredito que o que você está tentando seja provavelmente o melhor e o único possível de convencer vários comandos ... com alguns scripts de shell e dados canalizados, você pode obter a saída [formatada da maneira que está procurando]. - que pergunta eu perdi? pode ser melhor respondida com uma menção de scripts de shell canalizados, mas seu feedback útil não mencionou que: p é a resposta adequada um script de trabalho?
overprescrib
Acredito que o que você está tentando realizar provavelmente seja melhor descrito como "responda a uma pergunta"; não ensine alguém sobre filosofia.
Gardner Bickford
Vou colocar a resposta mais claramente no topo. Porém, sem a lição de filosofia, ninguém aprende por que a resposta é não, e pode voltar à Internet, nunca entendendo as palavras sábias do Linux Torvalds; "A filosofia do Linux é 'rir diante do perigo!' Ops, errado. "Faça você mesmo." É isso aí."
overprescrib
17

Tente iftop para rede e pidstat de sysstat .

Ambos são provavelmente uma instalação fácil (apt-get, etc) para a distribuição de sua escolha.

jelle foks
fonte
6

atopserve para fornecer o que você deseja, embora não seja tão específico quanto a quebra de E / S pelo tratamento de arquivos. Para obter estatísticas completas da rede, você deve aplicar um patch do kernel.

Flup
fonte
2

O iptraf pode ser muito útil e encontrar porcos de largura de banda.

NinjaTec
fonte
5
Adicionar mais informações / explicações tornará sua resposta melhor.
mtk