# rm-rf.es | Administración de sistemas

Bitácora personal de un SysAdmin Gnu/Linux, Windows, BSD...

Añadir más columnas a la salida del comando TOP


El comando top por defecto nos muestra las columnas PID, USER, PR, NI, VIRT, RES, SHR, S, %CPU, %MEM, TIME+, COMMAND. Esta información se puede modificar y añadir nuevas columnas con información adicional. Las columnas disponibles son las siguientes:

* A: PID        = Process Id
  b: PPID       = Parent Process Pid
  c: RUSER      = Real user name
  d: UID        = User Id
  e: USER       = User Name
  f: GROUP      = Group Name
  g: TTY        = Controlling Tty
  h: PR         = Priority
  i: NI         = Nice value
  j: P          = Last used cpu (SMP)
  k: %CPU       = CPU usage
  l: TIME       = CPU Time
  m: TIME+      = CPU Time, hundredths
  n: %MEM       = Memory usage (RES)
  o: VIRT       = Virtual Image (kb)
  p: SWAP       = Swapped size (kb)
  q: RES        = Resident size (kb)
  r: CODE       = Code size (kb)
  s: DATA       = Data+Stack size (kb)
  t: SHR        = Shared Mem size (kb)
  u: nFLT       = Page Fault count
  v: nDRT       = Dirty Pages count
  w: S          = Process Status
  x: COMMAND    = Command name/line
  y: WCHAN      = Sleeping in Function
  z: Flags      = Task Flags

Para añadir una nueva columna, lo primero que debemos hacer es presionar la tecla “f” mientras se está ejecutando top. Una vez dentro aparecerá el listado anterior y únicamente hay que presionar la tecla de la columna que nos interese + enter. Si presionaramos la “p” por ejemplo, podríamos ver la memoria SWAP utilizada por cada proceso:

top - 19:15:29 up 283 days, 11:55,  7 users,  load average: 1.03, 1.18, 1.16
Tasks: 143 total,   1 running, 142 sleeping,   0 stopped,   0 zombie
Cpu(s):  2.4%us,  1.1%sy,  0.0%ni, 87.7%id,  8.3%wa,  0.0%hi,  0.5%si,  0.0%st
Mem:   1034708k total,  1012432k used,    22276k free,    51620k buffers
Swap:  2031608k total,       68k used,  2031540k free,   760100k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  SWAP COMMAND
 6485 mysql     15   0  147m  31m 5004 S    2  3.1   4793:22 116m mysqld
  606 apache    15   0 58612  39m 2360 S    0  3.9   0:00.01  17m httpd
 2375 apache    15   0 59332  41m 3740 S    0  4.1   0:00.14  16m httpd
32430 apache    15   0 59336  41m 3884 S    0  4.1   0:00.14  16m httpd
24473 apache    15   0 59332  41m 3884 S    0  4.1   0:00.21  16m httpd

La descripción sobre el significado de cada columna la tenéis en la página man de top. Una vez configurado a nuestro gusto podemos guardar la configuración para siempre presionando SHIFT + w. Se guardará para nuestro usuario dentro del fichero personal de preferencias de top:

Wrote configuration to '/home/usuario/.toprc' 

El comando TOP


Top Unix

El comando TOP muestra a tiempo real un listado de los procesos que se están ejecutando en el sistema, especificando además el % de Cpu y Memoria que están utilizando, sus IDs, usuarios que lo están ejecutando, etc. Todo esto y mucho más lo hace una de las herramientas imprescindibles para la administración de cualquier tipo de sistema Unix y derivado.

La salida por pantalla de Top, puede dividirse en dos partes, la “cabecera” muestra entre otras cosas, el Uptime del servidor, nº de usuarios conectados y load average. En la siguiente línea podemos ver el nº de procesos ejecutandose en el sistema, así como el uso de disco, memoria y cpus.

Posteriormente podemos observar un listado de procesos, que pueden ser ordenados por uso de cpu o memoria, lo que es una excelente ayuda para detectar procesos que consumen excesivos recursos en el servidor. Este listado, muestra varios detalles de cada uno de los procesos, como pueden ser el PID de proceso, usuario que lo ejecuta, %cpu y memoria que consume, comando que está ejecutando o tiempo de ejecución del proceso entre otros.

Como siempre digo, toda la información necesaria para sacar el máximo partido al proceso la tenemos en man:

man top

No obstante, paso a detallar algunas de las opciones que podemos pasarle al comando:

Opciones del comando TOP:

-c : Para visualizar la línea de comandos completa de cada proceso, activado mostrará las rutas completas, mientras que desactivandolo solo muestra el nombre del programa, ejemplo:

$ top -c:

 4969 root      20   0 55092  39m   9m S   14  7.8  26:08.38 /usr/bin/X :0 -br -audit 0 -auth /var/lib/gdm/:0.Xauth -nolisten tcp vt7

$ top

 4969 root      20   0 59996  39m   9m S   16  7.8  26:05.87 Xorg

-d : Intervalo de actualización y refresco, podemos asignarle un valor numérico (segundos) que determinará cada cuanto actualice la información.

-U : Monitorizar solamente los procesos de un determinado UID.

-p : Monitorizar solamente los ID de procesos especificados, ejemplo:

top -p12 -p133

-n : Especificaremos el nº de veces que actualizará hasta que finalice la ejecución de Top, ejemplo:

top -n4 # Refrescará la información cuatro veces y finalizará la ejecución de TOP.

Algún día hablaremos también de modificaciones del comando TOP, como por ejemplo HTOP.