Como usar el comando top

Comando top

Yulexy Birriel

    A la hora de realizar el mantenimiento y monitorización de un servidor GNU/Linux (o de nuestro propio equipo) hay comandos que son de gran ayuda e importancia.                             El comando top nos ayuda a conocer los procesos de ejecución del sistema (y más cosas) en tiempo real y es una de las herramientas más importantes para un administrador.

    En este artículo vamos a ver cómo funciona el comando top para que conozcamos a fondo el funcionamiento de linux en nuestro equipo.


Ejecutar el comando

Abrimos una consola y simplemente ejecutamos el comando:

[soporte@srviasa01]$ top

Nos va a aparecer una interfaz en modo texto, en pantalla completa, que se va a ir actualizando cada 3 segundos. Muestra un resumen del estado de nuestro sistema y la lista de procesos que se están ejecutando. La salida que obtengo en mi equipo es la siguiente:

    top - 15:37:39 up 32 days, 23:45, 2 users, load average: 0,00, 0,01, 0,05

    Tasks: 103 total, 3 running, 100 sleeping, 0 stopped, 0 zombie

    %Cpu(s): 0,0 us, 0,7 sy, 0,0 ni, 97,0 id, 2,0 wa, 0,0 hi, 0,3 si, 0,0 st

    KiB Mem : 30704336 total, 29966724 free, 287268 used, 450344 buff/cache

    KiB Swap: 2093052 total, 2093052 free, 0 used. 30018340 avail Mem


     PID         USER      PR      NI              VIRT            RES      SHR       S       %CPU         %MEM       TIME+      COMMAND

    718          mysql       20        0           878760         1308        0            S          0,3               0,4           26:57.84     mysqld

11227        soporte       20       0             95088          2276    1336          S          0,3               0,6            0:01.04      sshd

11343        soporte       20       0             24356          1484    1052          R         0,3                0,4            0:01.82      top

        1             root        20       0             33324          1528      548          S         0,0                0,4            0:01.93      init

        2             root        20       0                     0                0          0          S         0,0                0,0            0:00.00      kthreadd

        3             root        20       0                     0                0          0          S         0,0                0,0            0:02.23      ksoftirqd/0



    Como observamos nos muestra una gran cantidad de información, la primera parte es un resumen de estado general del sistema, la segunda parte en columnas, nos muestra información de los procesos que se están gestionando actualmente.

Revisemos la información que nos presentan.


Análisis

    Es importante entender la salida del comando top, dada la gran cantidad de información mostrada. A continuación presentamos un breve resumen de la información que nos presenta.

El encabezado del comando top

Nos muestra información resumen del estado del equipo, esta separada en 4 partes que ilustran:

- El uptime (Tiempo de actividad) y el average de carga de procesos

- Las tareas y su estado

- Uso del CPU (en modo resumido por defecto)

- Uso de la memoria fisica y virtual



Salida comando top (encabezado)

Uptime, usuarios conectados y average de carga

top - 15:37:39 up 32 days, 23:45, 2 users, load average: 0,00, 0,01, 0,05

Tareas y su estado

Tasks: 103 total, 3 running, 100 sleeping, 0 stopped, 0 zombie

Uso del cpu (modo resumido)

%Cpu(s): 0,0 us, 0,7 sy, 0,0 ni, 97,0 id, 2,0 wa, 0,0 hi, 0,3 si, 0,0 st

Distribución de uso de memoria

KiB Mem : 30704336 total, 29966724 free, 287268 used, 450344 buff/cache

KiB Swap: 2093052 total, 2093052 free, 0 used. 30018340 avail Mem

Tiempo de actividad y average de carga de procesos en el sistema


top - 15:37:39 up 32 days, 23:45, 2 users, load average: 0,00, 0,01, 0,05

En este apartado, top nos resume la salida del comando uptime, otro de los comandos utiles que nos proporciona el sistema operativo, esta salida nos muestra:


    Hora actual.

    Tiempo que ha estado el sistema encendido (uptime).

    Número de usuarios conectados ( conexiones remotas o locales).

    Carga de procesos average en intervalos de 5, 10 y 15 minutos respectivamente.

    Puede desactivar o reactivar su visualización, usando la tecla interactiva 'l' (L minuscula),


Tareas y sus estados


Tasks: 103 total, 3 running, 100 sleeping, 0 stopped, 0 zombie

La segunda parte del encabezado nos muestra el total de tareas y procesos, los cuales pueden estar en diferentes estados. estos estados son controlados por el kernel del sistema operativo, y definen como los procesos están interactuando.

Running (ejecutandose)

procesos ejecutándose actualmente o preparados para ejecutarse

Sleeping (hibernar)

procesos dormidos esperando que ocurra algo (depende del proceso) para ejecutarse

Stopped (detenidos)

ejecución de proceso detenida (puede que esperen una entrada por parte del operador)

Zombie

Procesos en estado anomalo, estan activos, pero no está siendo ejecutados. Estos procesos se quedan en este estado cuando el proceso que los ha iniciado muere (padre)


Puede desactivar o reactivar su visualización, usando la tecla interactiva 't' (T minuscula),


Estados del CPU

%Cpu(s): 0,0 us, 0,7 sy, 0,0 ni, 97,0 id, 2,0 wa, 0,0 hi, 0,3 si, 0,0 st

Esta línea nos muestra los porcentajes de uso del procesador diferenciado por tipo de asignacion de utilidad.

Por tipo:


 us, user 

 tiempo de ejecución de los procesos "un-niced"(*) de usuario

sy, system

 tiempo de ejecución de procesos del kernel

  ni, nice

tiempo de ejecución de procesos "niced"(*) de usuarios

  

(*) Procesos nice y un-nice: se refiere a aquellos procesos que el usuario gestiona la prioridad de tiempo de CPU, próximamente haremos un tutorial de este tema.

Por tipo de espera:

wa, IO-wait

tiempo de espera por completar procesos de I/O

hi

tiempo usado sirviendo interrupciones de hardware

si

tiempo usado sirviendo interrupciones de software

Especiales:

st (stolen)

tiempo "robado" a esta maquina por el hipervisor (solo en equipos              virtualizados)

Puede desactivar o reactivar su visualización, usando la tecla interactiva 't' (T minuscula), adicionalmente puede intercambiar entre el modo resumido,el average de todos los cpu(s), o el modo detallado, usando la tecla interactiva '1' (el Numero uno)

Memoria

KiB Mem : 30704336 total, 29966724 free, 287268 used, 450344 buff/cache

KiB Swap: 2093052 total, 2093052 free, 0 used. 30018340 avail Mem


Esta porción consiste de dos líneas, que expresan valores desde kibibytes (KiB) hasta exbibytes (EiB), podemos cambiar esta unidad de visualización pulsando la letra 'E' en modo interactivo

Puede desactivar o reactivar su visualización, usando la tecla interactiva 'm' (M minuscula), ademas de intercambiar el modo de visualización (en programas top mas modernos)


Ejemplos:

En kibibyte (KiB)....

KiB Mem : 30704336 total, 29966724 free, 287268 used, 450344 buff/cache

KiB Swap: 2093052 total, 2093052 free, 0 used. 30018340 avail Mem

en gibibyte (GiB)

GiB Mem : 29,282 total, 28,578 free, 0,274 used, 0,430 buff/cache

GiB Swap: 1,996 total, 1,996 free, 0,000 used. 28,628 avail Mem


La siguiente tabla puede ayudar en la interpretación de la escala de valores que pueden ser mostrados:


        KiB = kibibyte = 1024 bytes

        MiB = mebibyte = 1024 KiB = 1,048,576 bytes

        GiB = gibibyte = 1024 MiB = 1,073,741,824 bytes

        TiB = tebibyte = 1024 GiB = 1,099,511,627,776 bytes

        PiB = pebibyte = 1024 TiB = 1,125,899,906,842,624 bytes

        EiB = exbibyte = 1024 PiB = 1,152,921,504,606,846,976 bytes


La línea 1 refleja la memoria física, clasificada de la siguiente manera:

        Memoria total.

        Memoria utilizada.

        Memoria libre.

        Memoria utilizada por buffer o cache.

La línea 2 refleja la memoria virtual, clasificada de la siguiente manera:

        Memoria total.

        Memoria utilizada.

        Memoria libre.

        Memoria en cache (la cual es memoria física).

Información de procesos (columnas)

    Ahora vamos a ver las diferentes columnas que nos encontramos al ejecutar el comando, acá nos detalla por cada proceso información estadística del uso de los recursos, en modo dinámico.

    PID        USER        PR         NI       VIRT       RES       SHR       S        %CPU       %MEM         TIME+            COMMAND

    718        mysql          20           0       878760  1308          0          S         0,3               0,4             26:57.84          mysqld

11227        soporte       20           0       95088     2276       1336       S         0,3              0,6             0:01.04             sshd

11343        soporte       20           0       24356     1484       1052       R         0,3              0,4             0:01.82             top

        1        root             20           0       33324     1528         548       S         0,0              0,4             0:01.93             init




Identificación:

PID

es el identificador de proceso. Cada proceso tiene un identificad 

único, puede ser visualizado en el directorio /proc

USER (User Id)Usuario por su UserId, propietario del proceso

Nivel de Prioridad:

PR

prioridad del proceso. Si pone RT es que se está ejecutando en tiempo real

NIasigna la prioridad. Si tiene un valor bajo (hasta -20) quiere decir que tiene más prioridad que otro con valor alto (hasta 19).

Uso de memoria:

VIRT

cantidad de memoria virtual utilizada por el proceso
REScantidad de memoria RAM física que utiliza el proceso
SHRmemoria compartida

Estado y porcentajes de uso:

S (ESTADO)estado del proceso
%CPUporcentaje de CPU utilizado desde la última actualización
%MEMporcentaje de memoria física utilizada por el proceso desde la última actualización
TIME+ (HORA+)tiempo total de CPU que ha usado el proceso desde su inicio

COMMAND: comando utilizado para iniciar el proceso, podemos ampliar la información del comando usando la tecla interactiva ‘c’ (C minúscula).

La presentación de estas columnas, pueden ser modificado usando el comando interactivo 'F', donde podrá activar o desactivar la visualización de la columna deseada pulsando la tecla '<espaciadora>', además podrá seleccionar otras columnas que muestran más información.

Entre otras:

    PPID = pid proceso padre

    UID = User Id efectivo

    RUID = Real User Id

    RUSER = Real User Name

    ENVIRON = Variables de entorno

    GID = Group Id

    GROUP = Group Name

    TTY = Tty que controla el proceso

Otros subcomandos de útiles de top

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND

718 mysql 20 0 878760 1308 0 S 0,3 0,4 26:57.84 mysqld

Además de los anteriores, podemos usar otros comandos que nos permiten visualizar más información con el comando top:

Tecla interactiva 'A' (A mayuscula), modo pantalla completa o jerarquizada.

Nos permite cambiar el modo de visualización de los procesos, al activar este modo ('A'), nos permitira visualizar entre distintas vistas, jerarquizadas, usando la tecla 'a' (A minuscula):


modo default (Jerarquico simple)

1 PID      USER         PR         NI       VIRT      RES     SHR      S         %CPU       %MEM       TIME+     COMMAND

128          root             20         0         0             0           0          S          0,3              0,0            0:05.03    kworker/7:1

21799      soporte       20         0        157708   2256   1552       R          0,3              0,0            0:03.34    top

2              root            20          0        0              0         0            S          0,0              0,0            0:00.01     kthreadd

3              root            20          0        0              0         0           S           0,0              0,0            0:00.09     ksoftirqd/0


2 PID      PPID        TIME+      %CPU        %MEM        PR         NI      S     VIRT     RES       UID        COMMAND

21800      2            0:00.00       0,0                0,0            20          0      S        0           0            0            kworker/7:0

21799      18782    0:03.34       0,3                0,0            20          0      R  157708  2256       1000          top

21781      2            0:00.00       0,0                0,0            20          0     S      0           0            0               kworker/7:2

21775     2551       0:00.01       0,0                0,0            20         0      S   89796  4092           89             pickup

21772     2             0:00.00       0,0                0,0           20          0      S  0             0                0              kworker/5:2


3 PID      %MEM        VIRT         RES        CODE         DATA         SHR     nMaj    nDRT     %CPU      COMMAND

815            0,1            327592   26980          4                93340        6576    720         0              0,0              firewalld

21027        0,1            1321852  21668       508             952772    12880         5         0              0,0              libvirtd

1138          0,1            553160   16476        4                 304380    5788         28         0              0,0              tuned


4 PID        PPID             UID         USER      RUSER      TTY     TIME+       %CPU      %MEM   S           COMMAND

18770      18762           1000       soporte       soporte      ?         0:00.61       0,0           0,0        S               sshd

18772      18766           1000       soporte       soporte      ?         0:00.00       0,0            0,0       S                sshd


modo Job (Jerarquico por proceso)

1 PID    USER         PR       NI            VIRT        RES     SHR       S       %CPU     %MEM          TIME+     COMMAND

21799  soporte        20         0              157708  2256     1552       R         0,7           0,0              0:03.67       top

1           root             20         0              128092 6852      4000       S         0,0           0,0             0:03.79        systemd

2           root            20          0              0            0                 0       S         0,0           0,0             0:00.01        kthreadd

3           root            20          0              0            0                 0       S         0,0           0,0             0:00.09        ksoftirqd/0

4           root            20          0              0            0                 0       S         0,0           0,0             0:05.23         kworker/0:0


2 PID       PPID         TIME+            %CPU        %MEM     PR             NI         S         VIRT          RES       UID        COMMAND

21800       2              0:00.01             0,0                0,0        20               0         S           0                 0            0           kworker/7:0

21799       18782      0:03.67             0,7                0,0        20               0         R      157708        2256      1000         top

21781       2              0:00.00             0,0                0,0        20               0         S         0                  0          0              kworker/7:2

21775      2551        0:00.01              0,0                0,0        20              0          S      89796         4092       89             pickup          

21772      2              0:00.00              0,0                0,0        20              0          S          0                 0          0              kworker/5:2


3 PID        %MEM         VIRT            RES              CODE            DATA      SHR            nMaj           nDRT          %CPU      COMMAND

815          0,1               327592       26980               4                     93340    6576            720             0                    0,0           firewalld

21027      0,1               1321852     21668               508                952772   12880          5                 0                    0,0           libvirtd

1138        0,1               553160       16476              4                     304380   5788          28                 0                    0,0           tuned

768         0,0               528128       14044               108                 450688   4924          670               0                    0,0          polkitd

817         0,0               438480       8812                 2456              222948    6408          672               0                    0,0          NetworkManager


4 PID         PPID         UID          USER            RUSER      TTY        TIME+        %CPU         %MEM    S     COMMAND

18770       18762       1000         soporte           soporte        ?         0:00.62          0,0               0,0          S            sshd

18772       18766       1000         soporte           soporte        ?         0:00.00          0,0               0,0          S            sshd



modo Mem (Jerárquico por uso de memoria)

1 PID       USER         PR         NI        VIRT        RES         SHR        S       %CPU       %MEM        TIME+            COMMAND

21799       soporte       20           0        157708    2256       1552         R         0,3             0,0           0:03.79               top

1               root             20           0         128092   6852       4000         S         0,0             0,0           0:03.79               systemd

2               root             20           0         0             0             0               S         0,0             0,0           0:00.01               kthreadd

3               root             20           0         0             0             0               S         0,0             0,0           0:00.09               ksoftirqd/0

4               root             20           0         0             0             0               S         0,0             0,0           0:05.23               kworker/0:0


2 PID      PPID        TIME+        %CPU       %MEM        PR         NI      S       VIRT      RES        UID         COMMAND

21800      2               0:00.01       0,0             0,0              20         0        S        0             0             0            kworker/7:0

21799     18782        0:03.79       0,3             0,0              20         0        R       157708   2256       1000       top

21781      2               0:00.00       0,0             0,0              20         0        S        0             0             0            kworker/7:2

21775      2551         0:00.01       0,0             0,0             20          0        S        89796     4092       89          pickup

21772      2               0:00.00       0,0             0,0             20          0        S        0             0              0           kworker/5:2


3 PID       %MEM   VIRT         RES       CODE       DATA       SHR       nMaj    nDRT       %CPU          COMMAND

815           0,1         327592     26980      4             93340        6576      720       0                0,0               firewalld

21027       0,1        1321852   21668      508          952772      12880    5           0                0,0               libvirtd

1138         0,1         553160    16476      4              304380       5788     28         0                0,0               tuned

768           0,0        528128     14044      108          450688       4924     670       0                0,0               polkitd

817           0,0        438480     8812         2456       222948       6408     672       0                0,0               NetworkManager


4 PID   PPID       UID      USER     RUSER   TTY   TIME+     %CPU   %MEM   S    COMMAND

18770   18762     1000    soporte   soporte    ?       0:00.63      0,0          0,0       S     sshd

18772   18766     1000    soporte   soporte    ?       0:00.00      0,0          0,0       S     sshd


Tecla interactiva 'u' (u minuscula), modo seguimiento de procesos de un usuario

Nos permite visualizar los procesos de un usuario especifico, al presionar la tecla 'u' nos pedira el User Name o el UID del usuario deseado, mostrando solo los procesos de este usuario.


Podemos usarla en conjunto del comando 'A' y activar un modo adicional que es el modo User.

4 PID       PPID       UID    USER     RUSER     TTY     TIME+     %CPU    %MEM S   COMMAND

18770       18762    1000   soporte   soporte       ?         0:00.68     0,0          0,0 S         sshd

18772       18766    1000   soporte   soporte       ?         0:00.00     0,0          0,0 S         sshd

18773       18772    1000   soporte   soporte       ?         0:00.01     0,0          0,0 S         sftp-server

18782       18770    1000   soporte   soporte      pts/1    0:00.07     0,0          0,0 S         bash

21799       18782    1000   soporte   soporte      pts/1    0:04.57     0,3          0,0 R         top


    Para ver el manual con las distintas opciones de uso de este comando, siempre puedes introducir por consola: man top

Esto ha sido todo por este tutorial. Espero que te haya servido de ayuda y si tienen alguna sugerencia sobre artículos con otros comandos, sólo deja un comentario.


Recuerda compartir con tus amigos este tutorial si te fue de utilidad.

Síguenos en nuestras redes sociales

¡Un saludo!

  

Compartir 





Leave a comment

You must be logged in to post a comment.