Linux tutorial · 4 min read · Oct 16, 2025
Cómo Extraer Valores de top y Graficarlos
Cómo Extraer Valores de top y Graficarlos
Por: Showayb Zahda+
Muchos investigadores que están realizando evaluaciones de rendimiento y benchmarking necesitan capturar los valores de la CPU y la RAM. Otros pueden necesitar capturar el rendimiento también. En este breve tutorial, mostraré cómo capturo los valores de la CPU y la RAM desde “top” y luego los extraigo en un comando de una línea.
Para capturar y almacenar la salida de top, usa el modo por lotes “top -b”. Top, por defecto, actualiza su lectura cada 10 segundos. Sin embargo, algunos investigadores necesitan los valores cada segundo. Bueno, es fácil, solo pasa el parámetro d, el comando se convierte en “top -b -d 1”. 1 aquí es un segundo. Este comando capturará la salida de top cada segundo. Pero aún no ha terminado. Necesitas almacenarlo. Es fácil, solo redirige la salida a un archivo:
top -b -d 1 > top.txtDespués de terminar tu experimento, no olvides detener top presionando “ctrl + c”. Ahora tienes el archivo que tiene una gran cantidad de líneas y lo que necesitas de él es solo parte de una línea. Afortunadamente, el formato de la salida es fijo y esto hace que extraer los valores sea muy fácil.
Lo siguiente es parte de uno de los segundos de top. Mirando la salida, puedes ver que hay una línea que comienza con Cpu(s). y la línea siguiente es Mem:. De hecho, necesitamos parte de estas líneas y no todas. Entonces, ¿cómo hacer eso?
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 XorgSi no estás familiarizado con Linux, las cosas pueden parecerte raras, pero de todos modos, solo usa los comandos que proporcionaré y haz tu trabajo. Los comandos que usaré son aquí, cat, grep, cut, nl. Los uso con canalización, así que todo será un comando de una línea. :)
cat top.txt | grep CpuEste comando mostrará algo como lo siguiente:
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%st¡Wooow esto es magia! Bueno, considéralo si te gusta. De todos modos, como puedes ver, cada línea de CPU representa la lectura de la CPU en un segundo. Pero digamos que necesito el valor inactivo de esta línea que es, por ejemplo, “68.1%id,”. Bueno, ahora viene el turno de cortar. El comando cut corta los datos en un archivo o salida estándar según el número de columna. El número de columna es el número del carácter en una línea. Todo cuenta como uno, es decir, % es uno, el espacio es uno, 5 es una columna. Entonces, ¿cómo contar? Puedes usar cualquier editor de texto y leer en la parte inferior del editor el número de columna o puedes hacerlo manualmente.
Usando el editor de texto, encontré que la columna 35 a 39 es el número que representa el valor inactivo. Entonces, ¿cómo cortarlo? Continuamos con nuestro comando:
cat top.txt | grep Cpu | cut -c 35-39La salida es la siguiente:
73.9
72.4
76.6
66.7
70.4
67.2
72.4
63.1
68.1
68.5
70.6
74.0
¡Woow otra magia! Está bien. cut -c 35-39 significa cortar las columnas 35 a 39 de la entrada y mostrarlas en la terminal. Entonces, si quieres capturar la parte %us. Simplemente cuenta las columnas y reemplázalas. Recuerda que capturamos los valores cada segundo. Entonces, ¿cómo agregar los segundos? Es fácil, usa nl: número de línea:
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
Bueno, si capturas top cada 3 segundos, puedes hacer esto:
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.0¡Woow esto es fantástico también! Ahora solo redirige la salida a un archivo:
cat top.txt | grep Cpu | cut -c 35-39 | nl > cpu.txtLleva el archivo a gnuplot o cualquier otro software de gráficos y disfruta.

Para la parte de Mem, supongo que es tu turno de hacerlo siguiendo los mismos pasos pero cambiando los parámetros.
Saludos
Showayb A A Zahda
[email protected]
Recibe nuevas publicaciones en tu bandeja de entrada.
No spam. Cancela la suscripción en cualquier momento.