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


Tal vez pueda interesarte


Compartí este artículo