GNU/Linux >> Tutoriales Linux >  >> Linux

Una guía para el comando "Top" de Linux

El comando superior permite a los usuarios monitorear los procesos y el uso de recursos del sistema en Linux. Es una de las herramientas más útiles en la caja de herramientas de un administrador de sistemas y viene preinstalada en cada distribución. A diferencia de otros comandos como ps , es interactivo y puede examinar la lista de procesos, eliminar un proceso, etc.

En este artículo, vamos a entender cómo usar el comando superior.

Contenido

  • 1 Primeros pasos
  • 2 Comprender la interfaz de top:el área de resumen

    • 2.1 Hora del sistema, tiempo de actividad y sesiones de usuario
    • 2.2 Uso de memoria
    • 2.3 Tareas
    • 2.4 Uso de la CPU
    • 2.5 Promedio de carga
  • 3 Comprender la interfaz de top:el área de tareas
  • 4 ejemplos principales de uso de comandos

    • 4.1 Procesos de eliminación
    • 4.2 Ordenar la lista de procesos
    • 4.3 Mostrar una lista de subprocesos en lugar de procesos
    • 4.4 Mostrando rutas completas
    • 4.5 Vista del bosque
    • 4.6 Listado de procesos de un usuario
    • 4.7 Filtrado a través de procesos
    • 4.8 Cambiar el aspecto predeterminado de las estadísticas de CPU y memoria
    • 4.9 Guardar su configuración
  • 5 Conclusión

Cómo empezar

Como ya habrá adivinado, simplemente necesita escribir esto para iniciar la parte superior:

top

Esto inicia una aplicación de línea de comandos interactiva, similar a la de la siguiente captura de pantalla. La mitad superior de la salida contiene estadísticas sobre procesos y uso de recursos, mientras que la mitad inferior contiene una lista de los procesos que se están ejecutando actualmente. Puede utilizar las teclas de flecha y las teclas de página arriba/abajo para navegar por la lista. Si desea salir, simplemente presione "q".

Hay varias variantes de top, pero en el resto de este artículo, hablaremos sobre la variante más común:la que viene con el paquete "procps-ng". Puede verificar esto ejecutando:

top -v

Si tiene esta variante, aparecerá en la salida, así:

procps-ng version 3.3.10

Están sucediendo muchas cosas en la interfaz de top, por lo que las desglosaremos poco a poco en la siguiente sección.

Comprender la interfaz de top:el área de resumen

Como hemos visto anteriormente, la salida de top se divide en dos secciones diferentes. En esta parte del artículo, nos centraremos en los elementos de la mitad del resultado. Esta región también se denomina "área de resumen".

Hora del sistema, tiempo de actividad y sesiones de usuario

En la parte superior izquierda de la pantalla (como se indica en la captura de pantalla anterior), la parte superior muestra la hora actual. A esto le sigue el tiempo de actividad del sistema, que nos dice el tiempo durante el cual el sistema ha estado funcionando. Por ejemplo, en nuestro ejemplo, la hora actual es "15:39:37", y el sistema ha estado funcionando durante 90 días, 15 horas y 26 minutos.

Luego viene el número de sesiones de usuario activas. En este ejemplo, hay dos sesiones de usuario activas. Estas sesiones pueden realizarse en un TTY (físicamente en el sistema, ya sea a través de la línea de comandos o en un entorno de escritorio) o un PTY (como una ventana de emulador de terminal o sobre SSH). De hecho, si inicia sesión en un sistema Linux a través de un entorno de escritorio y luego inicia un emulador de terminal, encontrará que habrá dos sesiones activas.

Si desea obtener más detalles sobre las sesiones de usuario activas, utilice el who comando.

Uso de memoria



La sección "memoria" muestra información sobre el uso de la memoria del sistema. Las líneas marcadas como "Mem" y "Swap" muestran información sobre la RAM y el espacio de intercambio respectivamente. En pocas palabras, un espacio de intercambio es una parte del disco duro que se usa como RAM. Cuando el uso de la RAM está casi lleno, las regiones de la RAM que se usan con poca frecuencia se escriben en el espacio de intercambio, listas para recuperarse más tarde cuando sea necesario. Sin embargo, debido a que el acceso a los discos es lento, confiar demasiado en el intercambio puede dañar el rendimiento del sistema.

Como era de esperar, los valores "total", "libre" y "usado" tienen sus significados habituales. El valor de "mem disponible" es la cantidad de memoria que se puede asignar a los procesos sin causar más intercambios.

El kernel de Linux también intenta reducir los tiempos de acceso al disco de varias formas. Mantiene una "caché de disco" en la RAM, donde se almacenan las regiones del disco que se usan con frecuencia. Además, las escrituras en disco se almacenan en un "búfer de disco" y el núcleo finalmente las escribe en el disco. La memoria total consumida por ellos es el valor "buff/cache". Puede sonar como algo malo, pero realmente no lo es:la memoria utilizada por el caché se asignará a los procesos si es necesario.

Tareas

La sección "Tareas" muestra estadísticas sobre los procesos que se ejecutan en su sistema. El valor "total" es simplemente el número total de procesos. Por ejemplo, en la captura de pantalla anterior, hay 27 procesos en ejecución. Para comprender el resto de los valores, necesitamos un poco de información sobre cómo el kernel de Linux maneja los procesos.

Los procesos realizan una combinación de trabajo vinculado a E/S (como leer discos) y trabajo vinculado a la CPU (como realizar operaciones aritméticas). La CPU está inactiva cuando un proceso realiza E/S, por lo que los sistemas operativos pasan a ejecutar otros procesos durante este tiempo. Además, el sistema operativo permite que un proceso determinado se ejecute durante un período de tiempo muy breve y luego cambia a otro proceso. Así aparecen los SO como si fueran “multitasking”. Hacer todo esto requiere que hagamos un seguimiento del "estado" de un proceso. En Linux, un proceso puede estar en uno de estos estados:

  • Ejecutable (R):un proceso en este estado se está ejecutando en la CPU o está presente en la cola de ejecución, listo para ejecutarse.
  • Sueño interrumpible (S):los procesos en este estado están esperando que se complete un evento.
  • Sueño ininterrumpido (D):en este caso, un proceso está esperando que se complete una operación de E/S.
  • Detenido (T):estos procesos se han detenido por una señal de control de trabajo (como al presionar Ctrl+Z) o porque se están rastreando.
  • Zombie (Z):el núcleo mantiene varias estructuras de datos en la memoria para realizar un seguimiento de los procesos. Un proceso puede crear una serie de procesos secundarios, y pueden salir mientras el padre todavía está presente. Sin embargo, estas estructuras de datos deben mantenerse hasta que el padre obtenga el estado de los procesos secundarios. Dichos procesos terminados cuyas estructuras de datos aún existen se denominan zombis.

Los procesos en los estados D y S se muestran como "dormidos", y los que se encuentran en el estado T se muestran como "detenidos". El número de zombis se muestra como el valor "zombie".

Uso de la CPU

La sección de uso de CPU muestra el porcentaje de tiempo de CPU dedicado a varias tareas. El us El valor es el tiempo que la CPU pasa ejecutando procesos en el espacio de usuario. Del mismo modo, el sy el valor es el tiempo dedicado a ejecutar los procesos del kernelspace.

Linux usa un valor "agradable" para determinar la prioridad de un proceso. Un proceso con un valor alto de "agradable" es "más agradable" que otros procesos y obtiene una prioridad baja. Del mismo modo, los procesos con un "agradable" más bajo obtienen una mayor prioridad. Como veremos más adelante, el valor predeterminado "agradable" se puede cambiar. El tiempo dedicado a ejecutar procesos con un "agradable" configurado manualmente aparece como el ni valor.

Esto es seguido por id , que es el tiempo que la CPU permanece inactiva. La mayoría de los sistemas operativos ponen la CPU en modo de ahorro de energía cuando está inactiva. Luego viene el wa valor, que es el tiempo que la CPU pasa esperando que se complete la E/S.

Las interrupciones son señales al procesador sobre un evento que requiere atención inmediata. Los periféricos suelen utilizar las interrupciones de hardware para informar al sistema sobre eventos, como la pulsación de una tecla en un teclado. Por otro lado, las interrupciones de software se generan debido a instrucciones específicas ejecutadas en el procesador. En cualquier caso, el sistema operativo las maneja, y el tiempo dedicado a manejar las interrupciones de hardware y software viene dado por hi y si respectivamente.

En un entorno virtualizado, una parte de los recursos de la CPU se asignan a cada máquina virtual (VM). El sistema operativo detecta cuándo tiene trabajo que hacer, pero no puede hacerlo porque la CPU está ocupada en alguna otra máquina virtual. La cantidad de tiempo perdido de esta manera es el tiempo de "robo", que se muestra como st .

Promedio de carga

La sección de carga promedio representa la "carga" promedio durante uno, cinco y quince minutos. “Carga” es una medida de la cantidad de trabajo computacional que realiza un sistema. En Linux, la carga es la cantidad de procesos en los estados R y D en un momento dado. El valor de "promedio de carga" le brinda una medida relativa de cuánto tiempo debe esperar para que se hagan las cosas.



Consideremos algunos ejemplos para entender este concepto. En un sistema de un solo núcleo, un promedio de carga de 0,4 significa que el sistema está haciendo solo el 40 % del trabajo que puede hacer. Un promedio de carga de 1 significa que el sistema está exactamente a su capacidad:el sistema se sobrecargará al agregar incluso un poco de trabajo adicional. Un sistema con un promedio de carga de 2,12 significa que está sobrecargado con un 112 % más de trabajo del que puede manejar.

En un sistema de múltiples núcleos, primero debe dividir el promedio de carga con la cantidad de núcleos de CPU para obtener una medida similar.

Además, el "promedio de carga" no es en realidad el "promedio" típico que la mayoría de nosotros conocemos. Es un "promedio móvil exponencial", lo que significa que una pequeña parte de los promedios de carga anteriores se tienen en cuenta en el valor actual. Si está interesado, este artículo cubre todos los detalles técnicos.

Comprender la interfaz de top:el área de tareas

El área de resumen es comparativamente más simple y contiene una lista de procesos. En esta sección, aprenderemos sobre las diferentes columnas que se muestran en la salida predeterminada de la parte superior.

  • PID

Este es el ID del proceso, un entero positivo único que identifica un proceso.

  • USUARIO

Este es el nombre de usuario "efectivo" (que se asigna a una ID de usuario) del usuario que inició el proceso. Linux asigna una identificación de usuario real y una identificación de usuario efectiva a los procesos; el último permite que un proceso actúe en nombre de otro usuario. (Por ejemplo, un usuario que no sea root puede elevarse a root para instalar un paquete).

  • PR y NI

El campo "NI" muestra el valor "agradable" de un proceso. El campo "PR" muestra la prioridad de programación del proceso desde la perspectiva del núcleo. El valor agradable afecta la prioridad de un proceso.

  • VIRT, RES, SHR y %MEM

Estos tres campos están relacionados con el consumo de memoria de los procesos. "VIRT" es la cantidad total de memoria consumida por un proceso. Esto incluye el código del programa, los datos almacenados por el proceso en la memoria, así como cualquier región de la memoria que se haya intercambiado en el disco. “RES” es la memoria consumida por el proceso en RAM, y “%MEM” expresa este valor como porcentaje del total de RAM disponible. Finalmente, "SHR" es la cantidad de memoria compartida con otros procesos.

  • S

Como hemos visto antes, un proceso puede estar en varios estados. Este campo muestra el estado del proceso en forma de una sola letra.

  • TIEMPO+

Este es el tiempo total de CPU utilizado por el proceso desde que comenzó, con una precisión de centésimas de segundo.

  • MANDO

La columna COMMAND muestra el nombre de los procesos.

Ejemplos de uso de comandos principales

Hasta ahora, hemos discutido sobre la interfaz de top. Sin embargo, también puede administrar procesos y puede controlar varios aspectos de la salida de top. En esta sección, vamos a tomar algunos ejemplos.

En la mayoría de los ejemplos a continuación, debe presionar una tecla mientras se ejecuta la parte superior. Tenga en cuenta que estas pulsaciones de teclas distinguen entre mayúsculas y minúsculas, por lo que si presiona "k" mientras el bloqueo de mayúsculas está activado, en realidad ha presionado una "K" y el comando no funcionará o hará algo completamente diferente.

Procesos de muerte

Si desea eliminar un proceso, simplemente presione 'k' cuando la parte superior se esté ejecutando. Aparecerá un mensaje, que solicitará el ID de proceso del proceso y presione Intro.

A continuación, ingrese la señal con la que se debe eliminar el proceso. Si deja esto en blanco, top usa un SIGTERM, que permite que los procesos finalicen correctamente. Si desea eliminar un proceso a la fuerza, puede escribir SIGKILL aquí. También puede escribir el número de la señal aquí. Por ejemplo, el número de SIGTERM es 15 y SIGKILL es 9.

Si deja el ID del proceso en blanco y presiona Intro directamente, terminará el proceso superior en la lista. Como mencionamos anteriormente, puede desplazarse con las teclas de flecha y cambiar el proceso que desea eliminar de esta manera.

Ordenando la lista de procesos

Una de las razones más frecuentes para usar una herramienta como top es saber qué proceso está consumiendo más recursos. Puede presionar las siguientes teclas para ordenar la lista:

  • 'M' para ordenar por uso de memoria
  • 'P' para ordenar por uso de CPU
  • 'N' para ordenar por ID de proceso
  • 'T' para ordenar por el tiempo de ejecución

Por defecto, top muestra todos los resultados en orden descendente. Sin embargo, puede cambiar al orden ascendente presionando 'R'.

También puede ordenar la lista con el -o cambiar. Por ejemplo, si desea ordenar los procesos por uso de CPU, puede hacerlo con:

top -o %CPU

Puede ordenar la lista por cualquiera de los atributos en el área de resumen de la misma manera.

Mostrar una lista de subprocesos en lugar de procesos

Anteriormente hemos mencionado cómo Linux cambia entre procesos. Desafortunadamente, los procesos no comparten memoria u otros recursos, lo que hace que estos cambios sean bastante lentos. Linux, como muchos otros sistemas operativos, admite una alternativa "ligera", llamada "hilo". Forman parte de un proceso y comparten ciertas regiones de memoria y otros recursos, pero se pueden ejecutar simultáneamente como procesos.

Por defecto, top muestra una lista de procesos en su salida. Si desea enumerar los hilos en su lugar, presione 'H' cuando la parte superior se esté ejecutando. Observe que la línea "Tareas" dice "Subprocesos" en su lugar, y muestra la cantidad de subprocesos en lugar de procesos.

Es posible que haya notado que ninguno de los atributos de la lista de procesos cambió. ¿Cómo es eso posible, dado que los procesos difieren de los hilos? Dentro del kernel de Linux, los hilos y procesos se manejan usando las mismas estructuras de datos. Por lo tanto, cada subproceso tiene su propia ID, estado, etc.

Si desea volver a la vista de proceso, presione 'H' nuevamente. Además, puede utilizar el -H cambiar para mostrar hilos de forma predeterminada.

top -H

Mostrando rutas completas

De forma predeterminada, top no muestra la ruta completa al programa ni hace una distinción entre los procesos del espacio del kernel y los procesos del espacio del usuario. Si necesita esta información, presione 'c' mientras se ejecuta la parte superior. Presione 'c' nuevamente para volver a la configuración predeterminada.

Los procesos de Kernelspace están marcados con corchetes alrededor de ellos. Como ejemplo, en la captura de pantalla anterior hay dos procesos del kernel, kthreadd y khelper . En la mayoría de las instalaciones de Linux, normalmente habrá algunas más.

Alternativamente, también puede comenzar arriba con el -c argumento:

top -c

Vista del bosque

A veces, es posible que desee ver la jerarquía de procesos hijo-padre. Puede ver esto con la vista del bosque, presionando 'v'/'V' mientras se ejecuta la parte superior.

Como puede ver en la captura de pantalla anterior, el systemd El proceso fue el primero en iniciarse en el sistema. Ha iniciado procesos como sshd , que a su vez ha creado otros sshd procesos, etc.

Listado de procesos de un usuario

Para enumerar los procesos de un determinado usuario, presione 'u' cuando la parte superior se esté ejecutando. Luego, ingrese el nombre de usuario o déjelo en blanco para mostrar los procesos para todos los usuarios.

Alternativamente, puede ejecutar el comando superior con el -u cambiar. En este ejemplo, hemos enumerado todos los procesos del usuario raíz.

top -u root

Filtrado a través de procesos

Si tiene muchos procesos con los que trabajar, una clasificación simple no funcionará lo suficientemente bien. En tal situación, puede usar el filtrado superior para concentrarse en algunos procesos. Para activar este modo, presione 'o'/'O'. Aparece un mensaje dentro de la parte superior y puede escribir una expresión de filtro aquí.

Una expresión de filtro es una declaración que especifica una relación entre un atributo y un valor. Algunos ejemplos de filtros son:

  • COMMAND=getty :filtra los procesos que contienen "getty" en el atributo COMMAND.
  • !COMMAND=getty :filtra los procesos que no tienen "getty" en el atributo COMMAND.
  • %CPU>3.0 :filtre los procesos que tienen una utilización de la CPU de más del 3 %.

Una vez que haya agregado un filtro, puede reducir aún más las cosas agregando más filtros. Para borrar cualquier filtro que haya agregado, presione '='.

Cambiar el aspecto predeterminado de las estadísticas de CPU y memoria

Si se encuentra principalmente en casa en un entorno GUI, es posible que no le guste la forma predeterminada de mostrar las estadísticas de CPU y memoria de top. Puede presionar 't' y 'm' para cambiar el estilo de las estadísticas de CPU y memoria. Aquí hay una captura de pantalla de arriba, donde hemos presionado 't' y 'm' una vez.

Si presiona 't' o 'm' repetidamente, pasará por cuatro vistas diferentes. En las dos primeras pulsaciones, pasa por dos tipos diferentes de barras de progreso. Si presiona la tecla por tercera vez, la barra de progreso se oculta. Si vuelve a pulsar la tecla, recuperará los contadores predeterminados basados ​​en texto.

Guardar su configuración

Si ha realizado cambios en la salida de la parte superior, puede guardarlos para usarlos más adelante presionando 'W'. top escribe su configuración en el .toprc archivo en su directorio de inicio.

Conclusión

El comando superior es extremadamente útil para monitorear y administrar procesos en un sistema Linux. Este artículo solo toca la superficie, y hay bastante que no hemos cubierto. Por ejemplo, hay muchas más columnas que puede agregar a la parte superior. Para todo esto, asegúrese de consultar la página de manual ejecutando man top en su sistema.


Linux
  1. Una guía de la terminal de Linux para principiantes

  2. Domina el comando ls de Linux

  3. comando linux ps

  4. El comando de localización en Linux

  5. Una guía para el comando "Buscar" de Linux

El comando superior de Linux

Cómo usar el comando fd en el sistema Linux

Cómo crear archivos en el sistema Linux:una guía definitiva

Una guía práctica para el comando chroot en Linux

Una guía para el comando superior en Linux

El comando System Activity Reporter (sar) en Linux