Procesos en Linux

Este módulo explica qué es un proceso en Linux, cómo se crea, cómo se gestiona y cómo interactúa con el sistema.

Entender los procesos es esencial para cualquier sysadmin, ya que todo lo que ocurre en Linux ocurre dentro de un proceso: comandos, servicios, demonios y tareas en segundo plano.


Introducción

Un proceso es un programa en ejecución.
Cuando ejecutas un comando, arrancas un servicio o inicias sesión, Linux crea uno o más procesos para gestionarlo.

El kernel es el encargado de:

  • Crear procesos
  • Asignarles CPU y memoria
  • Controlar su estado
  • Finalizarlos cuando termina su trabajo

Si sabes leer y controlar procesos, puedes diagnosticar cuelgues, consumos excesivos y servicios caídos.


Identidad de un proceso

Cada proceso en Linux tiene atributos clave:

  • PID (Process ID) → identificador único
  • PPID (Parent PID) → proceso padre
  • Usuario propietario
  • Estado
  • Prioridad

Ejemplo:

ps -ef | head

PID y PPID

Ejemplo:

ps -o pid,ppid,cmd -p $$ 

Salida típica:

PID   PPID  CMD
1234  1000  bash
  • bash tiene un padre
  • Todo proceso (excepto uno) tiene PPID

El proceso especial: PID 1

ps -p 1 -o pid,comm,args
  • Es el primer proceso del sistema
  • Hoy en día suele ser systemd
  • Si PID 1 falla → el sistema cae

Estados de los procesos

Los procesos pueden estar en distintos estados:

Estado Significado
R Running (ejecutándose)
S Sleeping (esperando)
D I/O ininterrumpible
T Stopped
Z Zombie

Ejemplo:

ps aux | grep Z

⚠️ Los procesos zombie ya terminaron, pero su padre no los ha limpiado.


Visualización de procesos

ps

Vista estática:

ps aux
ps -ef

Vista en árbol:

ps aux --forest

top

Monitorización en tiempo real:

top

Teclas útiles:

  • P → ordenar por CPU
  • M → ordenar por memoria
  • k → matar proceso
  • q → salir

htop (si está instalado)

Más visual y amigable:

htop

✅ Muy recomendable en servidores.


Jerarquía de procesos

Los procesos forman un árbol:

systemd (1)
 ├─ sshd
 │   └─ bash
 │       └─ vim
 ├─ nginx
 └─ cron

Características:

  • Un proceso crea otros procesos
  • Al morir el padre, los hijos se reasignan
  • systemd adopta huérfanos

Señales (signals)

Linux controla procesos usando señales.

Señales comunes:

Señal Número Uso
SIGTERM 15 Finalización ordenada
SIGKILL 9 Matar forzado
SIGSTOP 19 Pausar
SIGCONT 18 Reanudar

kill

kill 1234
kill -9 1234

⚠️ Usa -9 solo como último recurso.


pkill y killall

pkill nginx
killall firefox

Prioridad y scheduling

Linux decide qué proceso usa CPU y cuándo.

nice

Valores:

  • -20 → máxima prioridad
  • 19 → mínima prioridad

Ejemplo:

nice -n 10 comando

renice

Cambiar prioridad de un proceso en ejecución:

renice 5 -p 1234

Procesos en segundo plano

Ejecutar en background:

sleep 100 &

Ver jobs:

jobs

Traer al foreground:

fg %1

Enviar al background:

bg %1

Demonios y servicios

Los demonios son procesos que:

  • Se ejecutan en segundo plano
  • No tienen interacción directa con usuario
  • Arrancan con el sistema

Ejemplos:

  • sshd
  • nginx
  • cron

Gestionados normalmente por systemd:

systemctl status ssh

Errores comunes

Errores frecuentes:

  • Matar procesos a ciegas
  • Usar kill -9 siempre
  • No identificar el proceso correcto
  • Ignorar consumo de memoria
  • No revisar procesos zombie

💡 Entiende el proceso antes de matarlo.


Ejercicios prácticos

1. Identificar procesos activos

ps aux | head

2. Monitorizar consumo en tiempo real

top

3. Lanzar y matar un proceso

sleep 300 &
ps aux | grep sleep
kill <PID>

4. Ver jerarquía de procesos

ps aux --forest | less

Mentalidad

Un buen sysadmin piensa:

  • Todo problema tiene un proceso detrás
  • CPU, memoria y estado importan
  • Matar procesos es una decisión, no un reflejo
  • systemd es parte del juego
  • Observa antes de actuar

Dominar procesos es dominar el sistema en vivo.


Resumen

  • Todo en Linux se ejecuta como proceso
  • Cada proceso tiene PID y estado
  • ps, top y htop son herramientas clave
  • Las señales permiten controlar procesos
  • La jerarquía explica muchos comportamientos

Siguiente paso

En el siguiente módulo entrarás en:

Red en Linux (red.md)

Donde verás:

  • Conceptos básicos de red en Linux
  • Interfaces, IP y routing
  • Herramientas de diagnóstico de red