Saltar al contenido principal

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​

HerramientaUsoVentajas
&Segundo plano simpleSimple, rápido
nohupProcesos persistentesContinúa tras desconexión
screenSesiones de terminalMúltiples ventanas, separable
tmuxTerminal modernoMá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