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.

23 comentarios en “El comando TOP

    • Seguramente serán las X (entorno gráfico). En una terminal presiona la letra w (comando who) y te dirá quién está conectado a tu sistema:

      ~$ w
      12:28:43 up 3:07, 2 users, load average: 0,66, 0,59, 0,56
      USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
      alex tty7 :0 09:22 3:07m 12:14 0.23s x-session-manager
      alex pts/0 :0.0 12:27 0.00s 0.21s 0.01s w

      Verás que a mí también me salen dos, mi usuario y la sesión X.

    • No en realidad es uno solo, lo que sucede es que en Linux los procesos los divide, uno es como un gestor común(aplicaciones, entorno gráfico, carpetas entre otros) y el otro usuario es el que se encarga de la administración y control de tu sistema, es mejor que trabajar con uno solo usuario como lo hace Windows

  1. Muchas gracias por la información, solo quisiera consultar, respecto a la linea CPU(s) como lo explicaste, muestra el % de us, sy, ni, id, wa, hi, si y st, por lo que deduzco el primero %us muestra el uso, pero que significado tienen los otros % y que implicancia tienen en el rendimiento??

    Muchas gracias.

    • H0la Marcelo,

      %us= Porcentaje de tiempo de CPU usada por procesos de usuarios
      %sy= Porcentaje de tiempo de CPU usada por procesos de sistema
      %ni= Porcentaje de tiempo de CPU usada por procesos en estado nice
      %wa= Porcentaje de tiempo de CPU esperando a que tareas de I/O finalicen
      %hi= Porcentaje de tiempo de CPU sirviendo interrupciones de Hardware
      %si= Porcentaje de tiempo de CPU sirviendo interrupciones de Software

  2. Hola!
    En relacion al uso de la memoria coom deduzco cual es el porcentaje de la utilizacion de esta si lo que me da son numeros enteros
    Por ejemplo:
    Memory: 3000628K (2814592K) real, 4252520K (3957180K) virtual, 1457068K free Pa
    ge# 1/19
    Ahi me da los valores pero como se el porcentaje??

    • Hola nana!

      Para ver el porcentaje de memoria utilizada en top tienes que presionar shift + m. Automáticamente ordenará los procesos por porcentaje de memoria consumida.

      Saludos

  3. Hola!
    Se te ocurre algo como para sumar los porcentajes de tiempo de CPU y obtener el total como salida de un comando de consola? (grep, sed, awk, etc..)

  4. Creo que no es el lugar adecuado, pero recuro a ustedes para un auxilio
    tengo Postfix + Mailscanner + ClamAv.
    me envio un mail desde mi propio dominio (nl@dominio.com a nl@dominio.com) y tarda minimo 3 horas.
    al revisar el MAilscanner lo muestra como entregado.
    me pueden dar algun pista
    ya limpie la tabla maillog del mailscanner pensando que podria ser que este muy grande ya que tengo el log de 5 años, pero sigue igual

    Gracias por la ayuda
    Neil Lopez
    neillopez@hotmail.com

  5. Muy buenas a todos, este es el unico post que he encontrado que especifique esto tan completo, tengo dudas al respecto

    Según lo que dijo Luis y con la consulta top -c me sale los siguientes valores, si esto es correcto tengo los siguientes valores

    54.0%us= Porcentaje de tiempo de CPU usada por procesos de usuarios
    1.8%sy= Porcentaje de tiempo de CPU usada por procesos de sistema
    0.0%ni= Porcentaje de tiempo de CPU usada por procesos en estado nice
    51.0%wa= Porcentaje de tiempo de CPU esperando a que tareas de I/O finalicen
    0.7%hi= Porcentaje de tiempo de CPU sirviendo interrupciones de Hardware
    0.0%si= Porcentaje de tiempo de CPU sirviendo interrupciones de Software

    Bien evidentemente tengo un problema del %wa, pero como puedo solucionarlo o rebajarlo, ya le aumentamos la memoria ram al servidor, mejoro durante 1 mes pero ha vuelto otra vez a subir como la espuma

    Hay algo que pueda hacer para solucionarlo?

    Alguna sugerencia?

    Gracias por la ayuda!

  6. otra cosa, he estado viendo el comando htop
    y no se que valores son:

    1
    2
    Mem (eso me imagino que es memoria usada y total)
    Swp

    gracias y cualquier aclaración será de mucha ayuda!

  7. Gracias por el apunte.

    Me gustaría hacerte una pregunta, sabes si hay forma de que liste solamente ciertos procesos, como por ejemplo Xorg? Muchas veces busco un proceso en concreto y tarda bastante en aparecer. Desconozco si hay alguna opción de que liste solo procesos por ejemplo que comiencen por X.

    Gracias y un saludo.

  8. Hola, mi servidor dice lo siguiente cuando ejecuto top:

    Tasks: 148 total, 1 running, 147 sleeping, 0 stopped, 0 zombie
    Cpu(s): 0.8%us, 0.7%sy, 0.0%ni, 98.3%id, 0.1%wa, 0.0%hi, 0.0%si, 0.1%st
    Mem: 8028868k total, 1473284k used, 6555584k free, 210660k buffers
    Swap: 1999992k total, 0k used, 1999992k free, 809252k cached

    ustedes mencionan lo que son %us, %sy, %ni, %wa, %hi, %si, %st pero no leo que significa %id y ese es el que me preocupa porque está en más de 98% y de ahí no baja

    Por favor, si alguien pudiera decirme qué es eso se lo agradecería mucho.

  9. Hola!

    Puede alguien decirme que son esos indicadores que aparecen en la linea del usuario root, ej, “watchdog”, ksoftirgd, etc, y como podemos saber si son procesos normales o intromisiones. Gracias.

  10. Hola estuve mirando algunos detalles de este copmando y necesito que me ayuden porque en realidad lo ke kiero es alguna herramienta que me haga un diagnóstico de comportamiento de los procesos en un intervalo de tiempo, el Top me puede i mostrado esto pero lo ke necesito es el resumen del comportamiento para un tiempo determinado. Gracias

  11. Saludos Señores, me es de mucha ayuda de sus comentarios sobre el TOP.
    Estoy confrontando algunos problemas en los tiempos de respuestas al realizar procesos o consultas a la base de datos.
    Con el top pude apreciar %CPU que el tiempo de cpu se dispara a 99.8 y llega hasta 102.3
    Existe alguna instruccion que me indique el proceso que demanda mucho recurso del CPU.

    Que tablas se estan accesando en ese momento ?? o que proceso se esta ejecutando

    GRacias por su ayuda

  12. Hola, buenas noches.

    Me gustaría saber como poder usar este programa para obtener los datos de un proceso, ya que me encargaron hacer un programa que administre procesos y necesito de la información de top.

    Uso fork para hacer llamada a top pero no sé como obtener los datos.

    Gracias por su ayuda.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *