Capítulo 4.3 - Control de Procesos
Objetivos de Aprendizaje
Al final de este capítulo, usted será capaz de:
- Iniciar procesos
- Detener y eliminar procesos
- Suspender y reanudar
- Gestionar procesos en segundo plano
- Comprender las señales
Iniciar un Proceso
Línea de Comandos
# Proceso en primer plano
comando
# Proceso en segundo plano
comando &
# Ejemplo
sleep 60 &
nohup - Ignorar SIGHUP
# Continuar después de desconexión
nohup comando &
# Redirigir la salida
nohup comando > output.log 2>&1 &
Detener un Proceso
kill - Enviar una Señal
# Señal TERM (terminación elegante)
kill PID
kill -TERM PID
kill -15 PID
# Señal KILL (forzada)
kill -9 PID
kill -KILL PID
# Por nombre
killall nombre_proceso
killall -9 nombre_proceso # Forzar
# Por patrón
pkill patrón
pkill -9 patrón
Señales Comunes
| Señal | Número | Acción |
|---|---|---|
| SIGHUP | 1 | Hang up (recargar configuración) |
| SIGINT | 2 | Interrumpir (Ctrl+C) |
| SIGQUIT | 3 | Salir (core dump) |
| SIGTERM | 15 | Terminar (elegante) |
| SIGKILL | 9 | Kill (forzado, no puede ser ignorado) |
| SIGSTOP | 19 | Stop (suspender) |
| SIGCONT | 18 | Continue (reanudar) |
Suspender y Reanudar
Suspender
# Enviar SIGSTOP
kill -STOP PID
kill -19 PID
# O con Ctrl+Z en la terminal
# (suspende el proceso en primer plano)
Reanudar
# Enviar SIGCONT
kill -CONT PID
kill -18 PID
# En primer plano
fg
# En segundo plano
bg
Procesos en Segundo Plano
jobs - Ver los Jobs
# Ver los jobs
jobs
# Con PIDs
jobs -l
# También jobs terminados
jobs -a
fg y bg
# Poner en primer plano
fg
fg %1 # Job número 1
fg %nombre # Job por nombre
# Poner en segundo plano
bg
bg %1
disown - Desvincular un Job
# Desvincular del terminal
disown %1
disown -h %1 # No enviar SIGHUP
Ejemplos Prácticos
Escenario 1: Proceso que no responde
# 1. Encontrar el PID
ps aux | grep proceso
# 2. Intentar elegante
kill PID
# 3. Esperar unos segundos
sleep 5
# 4. Si sigue, forzar
kill -9 PID
Escenario 2: Proceso en segundo plano
# Iniciar en segundo plano
long_script.sh &
# Ver los jobs
jobs
# Poner en primer plano
fg %1
# Suspender (Ctrl+Z)
# Reanudar en segundo plano
bg %1
Escenario 3: Proceso que continúa tras desconexión
# Con nohup
nohup long_task.sh > output.log 2>&1 &
# O con screen/tmux
screen -S session
# Iniciar proceso
# Desvincular: Ctrl+A luego D
# Reconectar: screen -r session
Señales y su Uso
SIGTERM (15) - Terminación Elegante
kill -TERM PID
# El proceso puede:
# - Guardar datos
# - Cerrar archivos
# - Limpiar recursos
SIGKILL (9) - Terminación Forzada
kill -9 PID
# El proceso:
# - No puede ser ignorado
# - Es eliminado inmediatamente
# - No hay limpieza posible
¡Utilice solo si SIGTERM no funciona!
SIGHUP (1) - Recargar Configuración
# Usado frecuentemente para recargar configuración
kill -HUP PID
# Ejemplo: recargar nginx
kill -HUP $(pidof nginx)
Resumen
En este capítulo, usted ha aprendido:
Iniciar: comando, comando &, nohup
Detener: kill, killall, pkill con señales
Señales: TERM (elegante), KILL (forzado), HUP (recargar)
Suspender: SIGSTOP, Ctrl+Z
Reanudar: SIGCONT, fg, bg
Segundo plano: jobs, fg, bg, disown
Próximos Pasos
Capítulo 4.4: Prioridades y valores nice
Capítulo 4.5: Procesos y recursos
Capítulo creado el: diciembre 2024