Tratar de averiguar qué se está ejecutando en su máquina, y qué proceso está utilizando toda su memoria y haciendo que las cosas sigan siendo más sencillas, es una tarea bien realizada por la utilidad top
.
top
es un programa extremadamente útil que actúa de manera similar al Administrador de tareas de Windows o al Monitor de actividad de MacOS. Ejecutando top
en su máquina *nix le mostrará una vista en vivo y en ejecución del proceso que se ejecuta en su sistema.
$ top
Según la versión de top
estás corriendo, obtendrás algo parecido a esto:
top - 08:31:32 up 1 day, 4:09, 0 users, load average: 0.20, 0.12, 0.10
Tasks: 3 total, 1 running, 2 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.5 us, 0.3 sy, 0.0 ni, 99.2 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem: 4042284 total, 2523744 used, 1518540 free, 263776 buffers
KiB Swap: 1048572 total, 0 used, 1048572 free. 1804264 cached Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1 root 20 0 21964 3632 3124 S 0.0 0.1 0:00.23 bash
193 root 20 0 123520 29636 8640 S 0.0 0.7 0:00.58 flask
195 root 20 0 23608 2724 2400 R 0.0 0.1 0:00.21 top
Tu versión de top
puede verse diferente a esto, particularmente en las columnas que se muestran.
Cómo leer la salida
Puede saber lo que está ejecutando en función de la salida, pero tratar de interpretar los resultados puede ser un poco confuso.
Las primeras líneas contienen un montón de estadísticas (los detalles) seguidas de una tabla con una lista de resultados (la lista). Comencemos con el último.
La lista
Más recursos de Linux
- Hoja de trucos de los comandos de Linux
- Hoja de trucos de comandos avanzados de Linux
- Curso en línea gratuito:Descripción general técnica de RHEL
- Hoja de trucos de red de Linux
- Hoja de trucos de SELinux
- Hoja de trucos de los comandos comunes de Linux
- ¿Qué son los contenedores de Linux?
- Nuestros últimos artículos sobre Linux
Estos son los procesos que se ejecutan en el sistema. De forma predeterminada, están ordenados por uso de CPU en orden descendente. Esto significa que los elementos en la parte superior de la lista utilizan más recursos de CPU y causan más carga en su sistema. Son literalmente los procesos "principales" por uso de recursos. Tienes que admitir que es un nombre inteligente.
El COMMAND
La columna en el extremo derecho informa el nombre del proceso (el comando que ejecutó para iniciarlo). En este ejemplo, son bash
(un intérprete de comandos que estamos ejecutando top
en), flask
(un micro-framework web escrito en Python) y top
mismo.
Las otras columnas proporcionan información útil sobre los procesos:
PID
:el id del proceso , un identificador único para abordar los procesosUSER
:el usuario que ejecuta el procesoPR
:la prioridad de la tareaNI
:una mejor representación de la prioridadVIRT
:tamaño de la memoria virtual en KiB (kibibytes)*RES
:tamaño de la memoria residente en KiB* (la "memoria física" y un subconjunto de VIRT)SHR
:tamaño de memoria compartida en KiB* (la "memoria compartida" y un subconjunto de VIRT)S
:estado del proceso, normalmente I =inactivo, R =corriendo, S =dormir, Z =zombi, T o t =detenido (también hay otras opciones menos comunes)%CPU
:Porcentaje de uso de CPU desde la última actualización de pantalla%MEM
:porcentaje deRES
uso de memoria desde la última actualización de pantallaTIME+
:tiempo total de CPU utilizado desde que comenzó el procesoCOMMAND
:el comando, como se describe arriba
*Saber exactamente qué es el VIRT
, RES
y SHR
los valores representan no realmente materia en las operaciones diarias. Lo importante es saber que el proceso con más VIRT
es el proceso que usa más memoria. Si estás en top
porque está depurando por qué su computadora se siente como si estuviera en un charco de melaza, el proceso con el mayor VIRT
número es el culpable. Si desea saber exactamente qué significa memoria "compartida" y "física", consulte "Tipos de memoria de Linux" en el manual superior.
Y, sí, quise escribir kibi bytes, no kilo bytes El valor de 1024 que normalmente llama un kilobyte es en realidad un kibibyte. El kilo griego ("χίλιοι") significa mil y significa 1000 de algo (p. ej., un kilómetro son mil metros, un kilogramo son mil gramos). Kibi es un acrónimo de kilo y byte , y significa 1024 bytes (o 2). Pero, como las palabras son difíciles de pronunciar, muchas personas dicen kilobyte cuando significan 1.024 bytes. Todo esto significa que es top
está tratando de usar los términos apropiados aquí, así que simplemente hazlo. #quemassabes?.
Una nota sobre las actualizaciones de pantalla:
Las actualizaciones de pantalla en vivo son una de las cosas objetivamente realmente interesantes Los programas de Linux pueden hacer. Esto significa que pueden actualizar su propia pantalla en tiempo real, para que aparezcan animadas. A pesar de que están usando texto. ¡Muy guay! En nuestro caso, el tiempo entre actualizaciones es importante, porque algunas de nuestras estadísticas (%CPU
y %MEM
) se basan en el valor desde la última actualización de la pantalla.
Y debido a que estamos ejecutando una aplicación persistente, podemos presionar comandos clave para realizar cambios en vivo en los ajustes o configuraciones (en lugar de, por ejemplo, cerrar la aplicación y ejecutarla nuevamente con un indicador de línea de comando diferente).
Escribiendo h
invoca la pantalla de "ayuda", que también muestra el retraso predeterminado (el tiempo entre actualizaciones de pantalla). De forma predeterminada, este valor es (alrededor de) tres segundos, pero puede cambiarlo escribiendo d
(presumiblemente por "retraso") o s
(probablemente para "pantalla" o "segundos").
Los detalles
Encima de la lista de procesos, hay un montón de otra información útil. Algunos de estos detalles pueden parecer extraños y confusos, pero una vez que te tomes un tiempo para revisar cada uno de ellos, verás que son estadísticas muy útiles para encontrar en un apuro.
La primera fila contiene información general del sistema
top
:estamos ejecutandotop
! Holatop
!XX:YY:XX
:la hora, actualizada cada vez que se actualiza la pantallatop
(luegoX day, YY:ZZ
):el tiempo de actividad del sistema, o cuánto tiempo ha pasado desde que se encendió el sistemaload average
(luego tres números):la carga del sistema durante los últimos uno, cinco y 15 minutos, respectivamente
La segunda fila (Tasks
) muestra información sobre las tareas en ejecución y se explica por sí mismo. Muestra el número total de procesos y el número de procesos en ejecución, inactivos, detenidos y zombis. Esto es literalmente una suma de S
(estado ) columna descrita anteriormente.
La tercera fila (%Cpu(s)
) muestra el uso de la CPU separado por tipos. Los datos son los valores entre actualizaciones de pantalla. Los valores son:
us
:procesos de usuariosy
:procesos del sistemani
:buenos procesos de usuarioid
:el tiempo de inactividad de la CPU; un tiempo de inactividad elevado significa que, de lo contrario, no sucederán muchas cosaswa
:tiempo de espera o tiempo de espera para que se complete la E/Shi
:tiempo empleado en esperar interrupciones de hardwaresi
:tiempo de espera de interrupciones de softwarest
:"tiempo robado de esta máquina virtual por el hipervisor"
Puede colapsar las Tasks
y %Cpu(s)
filas escribiendo t
(para "alternar").
El cuarto (KiB Mem
) y quintas filas (KiB Swap
) proporcionan información para la memoria y el intercambio. Estos valores son:
total
used
free
Pero también:
- memoria
buffers
- intercambiar
cached Mem
Por defecto, están listados en KiB, pero presionando E
(para "ampliar el escalado de la memoria") recorre diferentes valores:kibibytes, mebibytes, gibibytes, tebibytes, pebibytes y exbibytes. (Es decir, kilobytes, megabytes, gigabytes, terabytes, petabytes y exabytes, pero sus "nombres reales".)
El top
El manual del usuario muestra aún más información sobre banderas y configuraciones útiles. Para encontrar el manual en su sistema, puede ejecutar man top
. Hay varios sitios web que muestran una representación HTML del manual, pero tenga en cuenta que estos pueden ser para una versión diferente de top .
Dos alternativas principales
No siempre tienes que usar top
para entender lo que está pasando. Dependiendo de sus circunstancias, otras herramientas pueden ayudarlo a diagnosticar problemas, especialmente cuando desea una interfaz más gráfica o especializada.
htop
top
se parece mucho a top
, pero trae algo extremadamente útil a la mesa:una representación gráfica del uso de CPU y memoria.
Así es el entorno que examinamos en top
busca en htop
. La pantalla es mucho más simple, pero aún rica en funciones.
Nuestros recuentos de tareas, carga, tiempo de actividad y la lista de procesos aún están allí, pero obtenemos una vista ingeniosa, coloreada y animada del uso de la CPU por núcleo y un gráfico de uso de memoria.
Esto es lo que significan los diferentes colores (también puedes obtener esta información presionando h
para "ayuda").
Prioridades o tipos de tareas de la CPU:
- azul:baja prioridad
- verde:prioridad normal
- rojo:tareas del núcleo
- azul:tareas virtualizadas
- el valor al final de la barra es el porcentaje de CPU utilizada
Memoria:
- verde:memoria usada
- azul:memoria intermedia
- amarillo:memoria caché
- los valores al final de la barra muestran la memoria utilizada y total
Si los colores no le resultan útiles, puede ejecutar htop -C
para deshabilitarlos; en lugar de htop
utilizará diferentes símbolos para separar los tipos de CPU y memoria.
En la parte inferior, hay una pantalla útil de teclas de función activas que puede usar para hacer cosas como filtrar resultados o cambiar el orden de clasificación. Pruebe algunos de los comandos para ver lo que hacen. Solo tenga cuidado al probar F9
. Esto mostrará una lista de señales que eliminarán (es decir, detendrán) un proceso. Sugeriría explorar estas opciones fuera de un entorno de producción.
El autor de htop
, Hisham Muhammad (y sí, se llama htop
después de Hisham) presentó una charla relámpago sobre htop
en FOSDEM 2018 en febrero. Explicó cómo htop
no solo tiene gráficos limpios, sino que también muestra información estadística más moderna sobre procesos que las utilidades de monitoreo más antiguas (como top
) no.
Puedes leer más sobre htop
en la página del manual o en el sitio web de htop. (Advertencia:el sitio web contiene un fondo animado de htop
.)
estadísticas de la ventana acoplable
Si está trabajando con Docker, puede ejecutar docker stats
para generar una representación rica en contexto de lo que están haciendo sus contenedores.
Esto puede ser más útil que top
porque, en lugar de separar por procesos, estás separando por contenedor. Esto es especialmente útil cuando un contenedor es lento, ya que ver qué contenedor usa la mayoría de los recursos es más rápido que ejecutar top
y tratando de mapear el proceso al contenedor.
Las explicaciones anteriores de acrónimos y descriptores en top
y htop
debería facilitar la comprensión de los que están en docker stats
. Sin embargo, la documentación de estadísticas de Docker proporciona descripciones útiles de cada columna.