Cuando se requiere monitorear el uso de CPU en un sistema operativo de la familia Unix, típicamente se utilizan herramientas como top
, atop
o htop
. Sin embargo, estas herramientas trabajan en modo interactivo. Si se necesita obtener una lista de procesos que más CPU consumen en un instante dado, ya sea para guardar en un archivo, enviar por mail, reenviar a otro comando o utilizar desde otra aplicación, se puede recurrir al modo batch de top
.
El modo batch (por lotes) de top
permite operar de manera no interactiva en la salida estándar. Esto permite reenviar la salida de top a otro comando u archivo. En este modo top
no acepta entrada alguna (comandos interactivos de parte del usuario) sino que continúa imprimiendo su salida por salida estándar de acuerdo a la cantidad de iteraciones indicadas.
Para utilizar el modo batch se debe lanzar top
con la opción -b
. El número de iteraciones se indica con la opción -n
.
Si se desean correr múltiples iteraciones es posible configurar el delay (período de tiempo entre iteraciones) a través de la opción -d
.
Para obtener sólo una muestra en un instante dado, ejecutar top -b -n 1
:
root@linuxito:~# top -b -n 1 | head top - 12:14:49 up 120 days, 21:02, 1 user, load average: 0.02, 0.07, 0.07 Tasks: 38 total, 1 running, 37 sleeping, 0 stopped, 0 zombie %Cpu(s): 1.4 us, 0.1 sy, 0.0 ni, 98.5 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st KiB Mem: 1048576 total, 394060 used, 654516 free, 0 buffers KiB Swap: 524288 total, 28412 used, 495876 free, 173932 cached PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 1 root 20 0 30180 864 336 S 0.0 0.1 0:00.32 init 2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd/41810 3 root 20 0 0 0 0 S 0.0 0.0 0:00.00 khelper/41810
Si se desea eliminar el resumen de cabecera, es posible recurrir a grep
:
root@linuxito:~# top -b -n 1 | grep PID -A 10 PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 1125 www-data 20 0 118m 19m 3884 R 92.3 1.9 9:43.94 php5-fpm 32715 mysql 20 0 528m 104m 3512 S 6.6 10.2 542:51.64 mysqld 1 root 20 0 30180 864 336 S 0.0 0.1 0:00.32 init 2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd/41810 3 root 20 0 0 0 0 S 0.0 0.0 0:00.00 khelper/41810 105 root 20 0 16996 8 4 S 0.0 0.0 0:00.00 upstart-udev-br 121 root 20 0 21076 8 4 S 0.0 0.0 0:00.00 udevd 152 root 20 0 21072 8 4 S 0.0 0.0 0:00.00 udevd 155 root 20 0 21072 8 4 S 0.0 0.0 0:00.00 udevd 244 root 20 0 14944 8 4 S 0.0 0.0 0:00.00 upstart-socket-
De esta forma se obtiene la lista de los diez procesos que más CPU consumen en un instante dado.
Para más información y opciones adicionales, recurrir al manual de top
:
man top
Fuente: linuxito