Comprender los Estados y el Ciclo de Vida de los Procesos con ps y top
En este paso, aprenderás sobre los estados de los procesos de Linux y su ciclo de vida. Comprender los estados de los procesos es crucial para monitorizar y gestionar los recursos del sistema de forma eficaz. Utilizarás los comandos ps y top para observar los procesos y sus estados.
Cada proceso en Linux tiene un estado que describe su actividad actual. Estos estados están definidos por el kernel e indican si un proceso está en ejecución, durmiendo, detenido o en otras condiciones.
Empecemos examinando los estados de los procesos utilizando el comando ps. El comando ps proporciona una instantánea de los procesos actuales.
Primero, abre tu terminal. Puedes hacerlo haciendo clic en el icono del terminal en el escritorio o pulsando Ctrl+Alt+T. Tu directorio de trabajo predeterminado es ~/project.
Para ver todos los procesos en ejecución en tu sistema, incluyendo aquellos sin terminal de control, utiliza el comando ps aux. Las opciones aux muestran los procesos de todos los usuarios (a), los procesos sin terminal de control (x), y presentan un formato orientado al usuario (u).
ps aux
Verás una larga lista de procesos. Presta atención a la columna STAT, que muestra el estado de cada proceso. Los estados comunes que podrías observar incluyen:
R: En ejecución o listo (en la CPU o esperando para ejecutarse)
S: Sueño interrumpible (esperando a que se complete un evento)
D: Sueño no interrumpible (esperando E/S, no se puede interrumpir)
T: Detenido (suspendido por una señal)
Z: Zombie (proceso terminado, pero el padre no ha recogido su estado de salida)
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.2 171820 16140 ? Ss HH:MM 0:01 /usr/lib/systemd/systemd ...
root 2 0.0 0.0 0 0 ? S HH:MM 0:00 [kthreadd]
labex 3448 0.0 0.2 266904 3836 pts/0 R+ HH:MM 0:00 ps aux
...output omitted...
A continuación, utilicemos el comando ps -ef. Este comando proporciona una lista completa (f) de todos los procesos (e), mostrando más detalles como el ID del proceso padre (PPID), la utilización de la CPU (C), la hora de inicio (STIME) y el comando (CMD).
ps -ef
Esta salida se utiliza a menudo para ver las relaciones padre-hijo entre los procesos, aunque no muestra explícitamente una estructura de árbol.
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 HH:MM ? 00:00:01 /usr/lib/systemd/systemd ...
root 2 0 0 HH:MM ? 00:00:00 [kthreadd]
root 3 2 0 HH:MM ? 00:00:00 [rcu_gp]
...output omitted...
Para visualizar la jerarquía de procesos, puedes usar la opción ps --forest. Esto muestra los procesos en un formato de árbol, lo que facilita la comprensión de qué procesos generaron otros.
ps --forest
Este comando es particularmente útil para la depuración y la comprensión de cómo se estructuran los diferentes servicios y aplicaciones en tu sistema.
PID TTY TIME CMD
2768 pts/0 00:00:00 bash
5947 pts/0 00:00:00 \_ sleep 10000
6377 pts/0 00:00:00 \_ ps --forest
...output omitted...
Ahora, exploremos el comando top, que proporciona una vista dinámica en tiempo real de un sistema en ejecución. Muestra un resumen de la información del sistema y una lista de procesos o hilos que el kernel de Linux gestiona actualmente.
Ejecuta el comando top:
top
Verás una pantalla interactiva. La sección superior proporciona información resumida del sistema, incluyendo tiempo de actividad, promedio de carga, resumen de tareas, estadísticas de la CPU y uso de memoria. La sección inferior lista los procesos individuales, ordenados por uso de CPU de forma predeterminada.
En la salida de top, observa la columna S para los estados de los procesos, similar a ps. También puedes ver %CPU (porcentaje de uso de CPU) y %MEM (porcentaje de uso de memoria) para cada proceso.
top - HH:MM:SS up DD min, X users, load average: X.XX, X.XX, X.XX
Tasks: XXX total, X running, XXX sleeping, X stopped, X zombie
%Cpu(s): X.X us, X.X sy, X.X ni, XX.X id, X.X wa, X.X hi, X.X si, X.X st
MiB Mem : XXXX.X total, XXXX.X free, XXX.X used, XXX.X buff/cache
MiB Swap: XXXX.X total, XXXX.X free, X.X used. XXXX.X avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
XXXX labex 20 0 XXXXXX XXXX XXXX R X.X X.X 0:00.0X top
...output omitted...
Mientras top esté en ejecución, puedes pulsar q para salir y volver a la solicitud de tu terminal.
Comprender estos comandos y la información que proporcionan es fundamental para monitorizar y solucionar problemas de procesos en un sistema Linux.