Existe um comando semelhante ao topo que mostra as larguras de banda da rede e os acessos de arquivos dos processos em execução

28

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 o lsof mostra apenas os acessos ao arquivo.

Atualmente, estou fazendo um processo de duas etapas:

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

Existe uma maneira melhor?

    
por silvernightstar 13.03.2013 / 17:17

4 respostas

6

Tanto quanto eu sei, não. O que você está tentando realizar é possível combinar vários comandos como você está fazendo atualmente, embora eu não saiba de outros aplicativos que fornecem dados mais fáceis de analisar (ed: outra resposta sugerida iftop que eu não sabia adicionar um modo de saída de texto de linha única com capacidade de canalização). Com alguns scripts de shell inteligentes, dados canalizados e um pouco de formatação manual, você pode ficar pelo menos perto da saída que está procurando.

Sua busca por algo que mostre as estatísticas de rede e arquivo - que seriam fornecidas por duas partes diferentes do sistema operacional - parece ser contra alguns inquilinos de 'The UNIX Philosophy:'

  • Make each program do one thing well. To do a new job, build afresh rather than complicate old programs by adding new features.
  • Expect the output of every program to become the input to another, as yet unknown, program. Don't clutter output with extraneous information.

Isto é particularmente evidente em programas que produzem texto, como o lsof. Você não costuma ver programas de console * NIX fornecendo uma interface de usuário tanto quanto dados a serem canalizados para outro programa, ou possivelmente um script utilizando comandos de shell como cut para criar suas próprias saídas especificamente adaptadas.

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

Write programs that do one thing and do it well. Write programs to work together. Write programs to handle text streams, because that is a universal interface.

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

    
por 19.03.2013 / 23:07
11

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.

    
por 18.03.2013 / 22:11
6

atop vai dar a você o que você quer, embora não seja tão específico quanto quebrar I / O por filehandle. Para obter estatísticas completas de rede, você deve aplicar um patch de kernel.

    
por 13.03.2013 / 17:32
2

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

    
por 18.03.2013 / 13:35