Capítulo 4.6 - Jobs y Tareas en Segundo Plano
Objetivos de Aprendizaje
Al final de este capítulo, usted será capaz de:
- Iniciar procesos en segundo plano
- Gestionar jobs con jobs, fg, bg
- Usar nohup para procesos persistentes
- Comprender screen y tmux
- Gestionar procesos después de la desconexión
Procesos en Segundo Plano
Inicio con &
# Proceso en segundo plano
comando &
# Ejemplo
sleep 60 &
tail -f /var/log/app.log &
# Ver el PID
echo $! # PID del último proceso en segundo plano
Redirección
# Redirigir salida
comando > output.log 2>&1 &
# Ignorar salida
comando > /dev/null 2>&1 &
# Ejemplo
long_script.sh > script.log 2>&1 &
Gestión de Jobs
jobs - Ver los Jobs
# Listar jobs
jobs
# Con PIDs
jobs -l
# También jobs terminados
jobs -a
# Formato:
# [1] + running sleep 60 &
# [2] - running tail -f log &
# Número, estado, comando
fg - Primer Plano
# Último job en primer plano
fg
# Job específico
fg %1
fg %2
fg %nombre
# Con Ctrl+Z, el proceso se suspende
# Luego fg lo pone en primer plano
bg - Segundo Plano
# Último job suspendido en segundo plano
bg
# Job específico
bg %1
bg %2
nohup - Ignorar SIGHUP
Problema
Cuando usted se desconecta, el shell envía SIGHUP a todos sus procesos hijos, terminándolos.
Solución: nohup
# Ignorar SIGHUP
nohup comando &
# Con redirección
nohup comando > output.log 2>&1 &
# El archivo nohup.out se crea automáticamente
# si no hay redirección
Características:
- El proceso continúa después de la desconexión
- Salida en
nohup.out(por defecto) - Puede ser redirigida
screen - Sesiones Persistentes
Instalación
sudo apt install screen # Ubuntu/Debian
sudo yum install screen # Red Hat/CentOS
Uso Básico
# Iniciar una sesión
screen
screen -S nombre_sesion # Con nombre
# Separar: Ctrl+A luego D
# Reconectar: screen -r
# Reconectar sesión nombrada: screen -r nombre_sesion
# Listar sesiones
screen -ls
# Terminar sesión
screen -X -S nombre_sesion quit
Comandos de screen (Ctrl+A)
Ctrl+A luego:
d # Separar
c # Nueva ventana
n # Ventana siguiente
p # Ventana anterior
" # Lista de ventanas
? # Ayuda
tmux - Multiplexor de Terminal Moderno
Instalación
sudo apt install tmux # Ubuntu/Debian
sudo yum install tmux # Red Hat/CentOS
Uso Básico
# Iniciar sesión
tmux
tmux new -s nombre_sesion
# Separar: Ctrl+B luego D
# Reconectar: tmux attach
# Reconectar sesión: tmux attach -t nombre_sesion
# Listar sesiones
tmux ls
# Terminar sesión
tmux kill-session -t nombre_sesion
Comandos de tmux (Ctrl+B)
Ctrl+B luego:
d # Separar
c # Nueva ventana
n # Ventana siguiente
p # Ventana anterior
% # División vertical
" # División horizontal
? # Ayuda
Comparación
| Herramienta | Uso | Ventajas |
|---|---|---|
& | Segundo plano simple | Simple, rápido |
nohup | Procesos persistentes | Continúa tras desconexión |
screen | Sesiones de terminal | Múltiples ventanas, separable |
tmux | Terminal moderno | Más funcionalidades que screen |
Ejemplos Prácticos
Escenario 1: Script Largo
# Iniciar en segundo plano con nohup
nohup long_script.sh > script.log 2>&1 &
# Desconectarse
# El script continúa
Escenario 2: Sesión de Trabajo
# Iniciar screen
screen -S trabajo
# Ejecutar varios comandos
# Separar: Ctrl+A D
# Reconectar más tarde
screen -r trabajo
Escenario 3: Monitoreo Continuo
# En screen/tmux
watch -n 1 'ps aux --sort=-%cpu | head'
# Separar y reconectar cuando sea necesario
Resumen
En este capítulo, usted ha aprendido:
Segundo plano: comando & para iniciar en segundo plano
Jobs: jobs, fg, bg para gestionar jobs
nohup: Ignorar SIGHUP, procesos persistentes
screen: Sesiones de terminal separables
tmux: Multiplexor de terminal moderno
Práctica: Elegir según necesidades (simple vs sesiones)
Próximos Pasos
Módulo 5: Usuarios y Permisos
Módulo 6: Scripting Shell
Capítulo creado el: Diciembre 2024