Como encontrar o uso da CPU pelo comando top

5

Atualmente estou usando

top -b -d 1 > file1.csv

para anexar toda a saída a um arquivo csv. No entanto, eu gostaria que o campo Cpu (% us) sozinho fosse inserido no arquivo1. Eu cheguei até aqui:

top -b -d 1|grep Cpu 

onde sou capaz de ver apenas a entrada da CPU.

Quando eu tento

top -b -d 1|grep Cpu > file1.csv

não parece funcionar, já que nem consigo visualizar meu arquivo.

Minha intenção é plotar um LiveGraph para todos os valores de CPU (armazenados em um arquivo csv) dinamicamente. Obrigado!

    
por P Ramesh 18.10.2011 / 16:55

4 respostas

5

Para uso total da CPU:

Se você QUER SOMENTE o uso da CPU, em geral, você pode tentar isto:

top -b -d1 -n1|grep -i "Cpu(s)"|head -c21|cut -d ' ' -f3|cut -d '%' -f1 > file1.csv

Isso lhe dará apenas o valor da CPU e atualizará o valor do arquivo. Se você quiser anexar os dados ao arquivo (visto que você está nomeando um arquivo csv), então, em vez de um > use dois, como >> file1.csv .

Para cada thread e uso da CPU:

Primeiro, você precisa eliminar o restante das colunas para facilitar a obtenção dos dados da CPU.

  1. Execute top e pressione f .
  2. Neste menu, você seleciona quais colunas deseja ver e quais não deseja. Para o seu caso, deixe apenas a coluna e o nome da CPU (se você quiser o nome)
  3. Pressione ESC para voltar ao menu principal principal e salve com Capital W a alteração. Agora você comanda é mais fácil de analisar.

Agora, para uso geral da CPU, você normalmente tem outras ferramentas, como ps , iostat an e cat /proc/stat . Para cada um, você precisa de uma análise diferente, como a usada para o topo. Eu só postei aqui para TOP desde que você mencionou explicitamente no título.

OBSERVAÇÃO : deve ser observado que top não é a maneira mais eficiente de ver o uso da CPU ou de trabalhar ao analisar valores para ela. Para alguns, usando f2 no comando cut mostra o valor, para outros o f3

    
por Luis Alvarado 18.10.2011 / 17:37
2

Estou pensando que usar top pode não ser a melhor abordagem. Eu olharia para o uso de / proc / stat. Eu encontrei um artigo chamado " Calculando o uso da CPU de / proc / stat " que pode resolver a maior parte do problema para você.

    
por jwernerny 18.10.2011 / 17:31
2

Demora um pouco, porque parece haver um buffer que precisa ser preenchido antes dos pipes começarem a funcionar.

Tente com um pequeno número de iterações primeiro (note: -n2 significa 2 iterações):

top -b -d1 -n2 | grep Cpu | cut -c 35-39

Em relação ao seu comentário: Se você redirecionar a saída padrão para um arquivo com top -b -d 1 > file.csv , não será possível canalizar a saída padrão para o comando grep.

Veja:

echo "Standard output" | grep "out"

vs.

echo "Standard output" >/tmp/foo | grep "out"

No segundo caso, você não tem saída.

    
por lgarzo 18.10.2011 / 17:43
0
top -b -n1 | grep Cpu | sed -r 's@.+:\s([0-9\.]+).+@@'

Como já foi dito, a opção -b junto com -n 1 fornecerá uma única saída de texto do topo, em vez do padrão constantemente atualizado. Então você pode canalizar para encontrar o valor que você está procurando.

    
por John Gilmer 14.01.2015 / 07:34

Tags