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
bashtiene 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 CPUM→ ordenar por memoriak→ matar procesoq→ 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
-9solo 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 -9siempre - 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