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 usuarios
  • u → formato orientado al usuario (CPU, MEM, etc.)
  • x → incluye procesos sin terminal asociada
  • -e → todos los procesos (equivale a ax)
  • -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 memoria
  • VSZ → 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 → salir
  • k → matar un proceso (pide el PID)
  • M → ordenar por uso de memoria
  • P → ordenar por uso de CPU
  • u → filtrar por usuario
  • 1 → 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 ejecutar
  • S (Sleeping) → dormido esperando un evento
  • D (Disk sleep) → esperando I/O, no interrumpible
  • T (Stopped) → detenido, generalmente por una señal
  • Z (Zombie) → terminado pero su padre no ha recogido el estado

Comandos esenciales para monitorizar el estado de los procesos del sistema.

Señales y control de procesos: kill, killall, pkill

Índice de la sección

Índice del curso