Linux Tutorial · 4 min read · Oct 16, 2025
Como Extrair Valores do top e Plotá-los
Como Extrair Valores do top e Plotá-los
Por: Showayb Zahda+
Muitos pesquisadores que estão realizando avaliação de desempenho e benchmarking precisam capturar os valores da CPU e da RAM. Outros podem precisar capturar a taxa de transferência também. Neste curto tutorial, vou mostrar como capturo os valores da CPU e da RAM do “top” e, em seguida, extraí-los em um comando de uma linha.
Para capturar e armazenar a saída do top, use o modo batch “top -b”. O top, por padrão, atualiza sua leitura a cada 10 segundos. No entanto, alguns pesquisadores precisam dos valores a cada segundo. Bem, é fácil, basta passar o parâmetro d, o comando se torna “top -b -d 1”. 1 aqui é um segundo. Este comando capturará a saída do top a cada segundo. Mas ainda não acabou. Você precisa armazená-lo. É fácil, basta redirecionar a saída para um arquivo:
top -b -d 1 > top.txtDepois de terminar seu experimento, não se esqueça de parar o top pressionando “ctrl + c”. Agora você tem o arquivo que contém uma enorme quantidade de linhas e o que você precisa dele é apenas parte de uma linha. Felizmente, o formato da saída é fixo e isso torna a extração dos valores muito fácil.
O seguinte é parte de um dos segundos do top. Olhando para a saída, você pode ver que há uma linha que começa com Cpu(s). e a linha seguinte é Mem:. Na verdade, precisamos de parte dessas linhas e não de todas. Então, como fazer isso.
top 18: 54:43 up 4:05, 2 users, load average: 3.64, 2.35, 1.37
Tasks: 135 total, 6 running, 129 sleeping, 0 stopped, 0 zombie
Cpu(s): 19.2%us, 19.7%sy, 0.0%ni, 61.1%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 2054160k total, 2016144k used, 38016k free, 12292k buffers
Swap: 4417864k total, 38360k used, 4379504k free, 1310488k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
6929 shuaib 15 0 173m 12m 8940 R 65 0.6 7:22.44 gtkgnash
6916 shuaib 15 0 525m 58m 22m S 6 2.9 0:56.39 totem
5717 root 15 0 491m 87m 12m S 3 4.4 2:13.24 XorgSe você não está familiarizado com o Linux, as coisas podem parecer estranhas para você, mas de qualquer forma, basta usar os comandos que vou fornecer e concluir seu trabalho. Os comandos que vou usar são aqui, cat, grep, cut, nl. Eu os uso com encadeamento, então tudo será um comando de uma linha. :)
cat top.txt | grep CpuEste comando mostrará algo como o seguinte:
Cpu(s): 14.3%us, 7.4%sy, 0.0%ni, 73.9%id, 0.0%wa, 0.0%hi, 4.4%si, 0.0%st
Cpu(s): 15.3%us, 7.4%sy, 0.0%ni, 72.4%id, 0.0%wa, 0.0%hi, 4.9%si, 0.0%st
Cpu(s): 11.7%us, 5.4%sy, 0.0%ni, 76.6%id, 2.9%wa, 0.5%hi, 2.9%si, 0.0%st
Cpu(s): 19.6%us, 9.3%sy, 0.0%ni, 66.7%id, 0.0%wa, 0.0%hi, 4.4%si, 0.0%st
Cpu(s): 14.8%us, 9.9%sy, 0.0%ni, 70.4%id, 0.0%wa, 0.5%hi, 4.4%si, 0.0%st
Cpu(s): 16.2%us, 9.3%sy, 0.0%ni, 67.2%id, 0.0%wa, 0.0%hi, 7.4%si, 0.0%st
Cpu(s): 12.3%us, 8.9%sy, 0.0%ni, 72.4%id, 0.0%wa, 0.0%hi, 6.4%si, 0.0%st
Cpu(s): 19.2%us, 11.8%sy, 0.0%ni, 63.1%id, 1.0%wa, 0.0%hi, 4.9%si, 0.0%st
Cpu(s): 16.2%us, 10.3%sy, 0.0%ni, 68.1%id, 0.0%wa, 0.5%hi, 4.9%si, 0.0%st
Cpu(s): 17.7%us, 9.9%sy, 0.0%ni, 68.5%id, 0.0%wa, 0.0%hi, 3.9%si, 0.0%st
Cpu(s): 15.7%us, 9.8%sy, 0.0%ni, 70.6%id, 0.0%wa, 0.0%hi, 3.9%si, 0.0%st
Cpu(s): 13.7%us, 7.4%sy, 0.0%ni, 74.0%id, 0.0%wa, 0.0%hi, 4.9%si, 0.0%stUau, isso é mágica. Bem, considere isso se você gostar. De qualquer forma, como você pode ver, cada linha da CPU representa a leitura da CPU em um segundo. Mas digamos que eu precise do valor ocioso dessa linha, que é, por exemplo, “68.1%id,”. Bem, agora vem a vez do corte. O comando cut corta os dados em um arquivo ou saída padrão com base no número da coluna. O número da coluna é o número do caractere em uma linha. Tudo conta como um, ou seja, % é um, espaço é um, 5 é uma coluna. Então, como contar, você pode usar qualquer editor de texto e ler na parte inferior do editor o número da coluna ou pode fazer isso manualmente.
Usando o editor de texto, descobri que a coluna 35 a 39 é o número que representa o valor ocioso. Então, como cortá-lo. Continuamos com nosso comando:
cat top.txt | grep Cpu | cut -c 35-39A saída é a seguinte:
73.9
72.4
76.6
66.7
70.4
67.2
72.4
63.1
68.1
68.5
70.6
74.0
Uau, outra mágica. Está bom. cut -c 35-39 significa cortar as colunas de 35 a 39 da entrada e exibi-las no terminal. Então, se você quiser capturar a parte %us. Basta contar as colunas e substituí-las. Lembre-se de que capturamos os valores a cada segundo. Então, como adicionar os segundos, é fácil, use nl: número da linha:
cat top.txt | grep Cpu | cut -c 35-39 | nl1 73.9
2 72.4
3 76.6
4 66.7
5 70.4
6 67.2
7 72.4
8 63.1
9 68.1
10 68.5
11 70.6
12 74.0
Bem, se você capturar o top a cada 3 segundos, pode fazer isso:
cat top.txt | grep Cpu | cut -c 35-39 | nl -i 31 73.9
4 72.4
7 76.6
10 66.7
13 70.4
16 67.2
19 72.4
22 63.1
25 68.1
28 68.5
31 70.6
34 74.0Uau, isso é fantástico também. Agora, basta redirecionar a saída para um arquivo:
cat top.txt | grep Cpu | cut -c 35-39 | nl > cpu.txtLeve o arquivo para o gnuplot ou qualquer outro software de plotagem e aproveite.

Para a parte da Mem, eu acho que é sua vez de fazer isso seguindo os mesmos passos, mas mudando os parâmetros.
Saudações
Showayb A A Zahda
[email protected]
Receba novas postagens na sua caixa de entrada
Sem spam. Cancele a assinatura a qualquer momento.