Supervisión de procesos: ps, top, htop, pgrep, pstree
Introducción
En Linux, cada programa en ejecución es un proceso. El sistema operativo le asigna un identificador único llamado PID (Process ID). Conocer los procesos activos es fundamental para monitorizar el sistema, detectar problemas de rendimiento y gestionar recursos.
ps — Instantánea de procesos
Muestra una instantánea de los procesos activos en el momento de la ejecución. Es el comando más básico para listar procesos.
Uso básico:
$ ps
$ ps aux
$ ps -ef
Opciones comunes:
a→ muestra procesos de todos los usuariosu→ formato orientado al usuario (CPU, MEM, etc.)x→ incluye procesos sin terminal asociada-e→ todos los procesos (equivale aax)-f→ formato completo con árbol de procesos padre-hijo
Columnas principales de ps aux:
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.1 168556 11200 ? Ss 08:00 0:01 /sbin/init
PID→ identificador del proceso%CPU/%MEM→ uso de CPU y memoriaVSZ→ memoria virtual total (KB)RSS→ memoria física residente (KB)STAT→ estado del proceso (S=dormido, R=ejecutando, Z=zombie, T=detenido)COMMAND→ nombre del proceso o comando
top — Monitor interactivo en tiempo real
Muestra los procesos en tiempo real, actualizándose cada pocos segundos. Es el monitor más usado para detectar procesos que consumen demasiados recursos.
Ejemplo:
$ top
Atajos de teclado dentro de top:
q→ salirk→ matar un proceso (pide el PID)M→ ordenar por uso de memoriaP→ ordenar por uso de CPUu→ filtrar por usuario1→ mostrar cada CPU por separado
Opciones en línea de comandos:
$ top -u juan # solo procesos del usuario juan
$ top -d 2 # actualizar cada 2 segundos
$ top -n 1 -b # modo batch, una sola iteración (útil en scripts)
htop — Monitor interactivo mejorado
Versión más visual e intuitiva de top. Permite desplazamiento con cursor, matar procesos con F9 y
ver barras de uso de CPU y memoria en color. Generalmente no está instalado por defecto.
Instalación:
# apt install htop # Debian/Ubuntu
# dnf install htop # Fedora/RHEL
Uso:
$ htop
pgrep — Buscar procesos por nombre
Devuelve el PID de los procesos que coinciden con un patrón de nombre.
Ejemplos:
$ pgrep nginx # PID del proceso nginx
$ pgrep -u juan bash # PID de bash del usuario juan
$ pgrep -l ssh # muestra PID y nombre
Opciones comunes:
-u→ filtrar por usuario-l→ mostrar nombre junto al PID-a→ mostrar la línea de comando completa
pstree — Árbol de procesos
Muestra los procesos en forma de árbol, visualizando la relación padre-hijo entre ellos. Muy útil para entender qué proceso lanzó qué otro.
Ejemplos:
$ pstree
$ pstree -p # muestra también los PID
$ pstree juan # árbol de procesos del usuario juan
Salida típica:
systemd─┬─cron
├─sshd───sshd───bash───pstree
└─nginx───2*[nginx]
Estados de un proceso
R(Running) → en ejecución o listo para ejecutarS(Sleeping) → dormido esperando un eventoD(Disk sleep) → esperando I/O, no interrumpibleT(Stopped) → detenido, generalmente por una señalZ(Zombie) → terminado pero su padre no ha recogido el estado