Saltar al contenido principal

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ñalNúmeroAcción
SIGHUP1Hang up (recargar configuración)
SIGINT2Interrumpir (Ctrl+C)
SIGQUIT3Salir (core dump)
SIGTERM15Terminar (elegante)
SIGKILL9Kill (forzado, no puede ser ignorado)
SIGSTOP19Stop (suspender)
SIGCONT18Continue (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