En Linux se pueden manejar procesos en segundo plano y a veces útil para trabajar de manera mas flexible, por ejemplo se puden enviar procesos al background para no bloquear la consola con el y poder utilizarla para otra tarea, tambien es util en servidores y entornos de desarrollo, aquí te explico cómo enviar procesos al background y recuperarlos utilizando comandos como jobs, bg, fg, nohup y tmux.
Contents
Comando “bg”
El comando bg envía un proceso suspendido al background, permitiendo continuar su ejecución sin bloquear la terminal, para el ejemplo vamos a usar el comando sleep porque es un proceso que estará en ejecución tantos segundos como le indiquemos
sleep 100 Ctrl + Z bg
Primero inicias un proceso, lo suspendes con Ctrl + Z, y luego lo envías al background con bg.
Para hacer el ejemplo mas grafico vamos a lanzar un segundo proceso, lo lanzas, lo suspendes con Ctrl + Z, y luego lo envías al background con bg.
sleep 150 Ctrl + Z bg
Comando “jobs”
El comando jobs
muestra una lista de todos los trabajos (procesos) que has iniciado en la sesión actual, estos pueden estar en ejecución, suspendidos o en background, si seguiste el ejemplo de bg, aqui jobs debería mostrar
jobs [1]- Running sleep 100 [2]+ Running sleep 150
El comando jobs solo mostrar los procesos en ejecución en la sesión de la terminal, es decir no mostrara los que esten corriendo en otra terminal y menos aun los procesos de sistema.
Comando “fg”
El comando fg recupera un proceso en background de vuelta al foreground, es decir, a primer plano, permitiendo que interactúes directamente con él en la terminal, ejemplo:
fg %1
Este comando recupera el trabajo 1 (identificado por %1) y lo lleva al foreground, el comando bg lo envía al fondo, con jobs puedes ver los id para luego recuperarlo con fg,
Comando “nohop”
El inconveniente de los comandos anteriores es que si se cierra la sesión de la terminal los procesos se cortan, por ejemplo si se esta conectado por SSH realizando alguna tarea que no puede ser cortada, la mejor opción para enviar un proceso al background es el comando nohop
El comando nohup permite que un proceso continúe ejecutándose incluso después de cerrar la sesión o la terminal porque es enviado no solo al fondo sino que es enviado para que lo maneje el propio sistema, este es útil para ejecutar tareas largas sin preocuparse por la desconexión.
Ejemplo:
nohup comando &
Esto ejecutará el comando en background y guardará la salida en un archivo llamado nohup.out, sin embargo, si bien podemos ver la salida, no podemos interactuar con él, eso nos lleva a la siguiente alternativa.
Herramienta “tmux”
Tmux es una herramienta realmente interesante para trabajar con seguridad en la línea de comandos y maximizar la productividad, se trata de un multiplexor de terminal que te permite gestionar múltiples terminales dentro de una sola ventana, es decir que permite dividir una terminal en varias secciones, ejecutar múltiples procesos en paralelo y moverte entre diferentes sesiones de trabajo sin tener que abrir múltiples ventanas de terminal.
Además, una de las principales ventajas es que las sesiones pueden desconectarse y reconectarse, lo que significa que puedes iniciar un trabajo en una sesión, cerrar la terminal, y luego volver a conectarte más tarde para continuar trabajando sin perder el estado de los procesos.
Es especialmente útil en entornos de servidor o cuando trabajas en proyectos de larga duración que requieren ejecutar comandos o procesos durante un período prolongado, al permitir que las sesiones se mantengan incluso después de cerrar la conexión SSH o la terminal, permite asegurar que tus trabajos no se interrumpan, lo que es importante para tareas como la ejecución de scripts complejos, la compilación de código, o la monitorización de servidores, además, su capacidad de dividir la pantalla en paneles facilita la multitarea y la organización del entorno de trabajo es una gran ventaja y permite mejorar la productividad.
Comandos básicos
Iniciar una nueva sesión:
tmux new -s session_name
Desconectar de una sesión (sin cerrarla):
Ctrl + b, luego d
Volver a una sesión existente:
tmux attach -t session_name
Listar sesiones:
tmux ls
Cerrar sesión (salir de tmux):
exit
o presiona Ctrl + d.
Gestión de ventanas
Crear una nueva ventana:
Ctrl + b, luego c
Cambiar entre ventanas:
Ctrl + b, luego número de ventana (0, 1, 2, ...) Ctrl + b, luego n (siguiente ventana) Ctrl + b, luego p (ventana anterior)
Renombrar una ventana:
Ctrl + b, luego , (coma)
Cerrar una ventana:
Ctrl + b, luego &
Gestión de paneles
Dividir el panel horizontalmente:
Ctrl + b, luego " (comillas dobles)
Dividir el panel verticalmente:
Ctrl + b, luego %
Cambiar entre paneles:
Ctrl + b, luego flecha de dirección (↑ ↓ ← →)
Cerrar el panel actual:
Ctrl + b, luego x
Redimensionar paneles:
Ctrl + b, luego : para entrar en el modo de comandos, y escribe resize-pane -D (para disminuir) o resize-pane -U (para aumentar), etc.
Gestión de sesiones
Cambiar el nombre de una sesión:
tmux rename-session -t old_name new_name
Matar (cerrar) una sesión:
tmux kill-session -t session_name
Matar todas las sesiones:
tmux kill-server
Copiar y pegar en tmux
Entrar en el modo de selección:
Ctrl + b, luego [
Mover el cursor para seleccionar texto:
Usa las flechas del teclado
Comenzar a seleccionar texto:
Presiona Space
Copiar texto seleccionado:
Presiona Enter
Pegar texto copiado:
Ctrl + b, luego ]
Otros comandos útiles
Mostrar reloj en pantalla:
Ctrl + b, luego t
Buscar en el historial:
Ctrl + b, luego [ (entrar en modo de selección), luego / para buscar
Esta herramienta se encuentra disponibles en los repositorios de todas las distros, sin embargo, por alguna razón no siempre todas las funciones están disponibles en el binario instalado, en algunas distros incluso la sesión no se conserva en caso de desconexión, si eso pasa siempre se puede Compilar Tmux
Conclusión
En resumen, dominar herramientas como tmux y los comandos relacionados con la gestión de procesos en segundo plano en Linux es casi esencial para cualquier usuario que trabaje en un entorno de terminal, especialmente en servidores y tareas de larga duración, con tmux, no solo puedes manejar múltiples sesiones de terminal de manera eficiente, sino que también puedes asegurarte de que tus procesos continúen ejecutándose incluso si te desconectas de la sesión, lo que da flexibilidad y seguridad.
Al aprender y aplicar comandos como jobs, bg, fg, nohup y tmux, puedes optimizar tu productividad, reducir posibles problemas por interrupciones, estas herramientas son esenciales para manejarte en un entorno de trabajo en Linux, permitiéndote trabajar de manera más eficiente y con mayor tranquilidad, sabiendo que tus procesos están bajo control y bien gestionados.
Administrador de Sistemas, Programador, Docente y ahora resulta que también Blogger (peor es ser tictoker). Más de 20 años de experiencia en computación atendiendo nabos y resolviendo problemas, los cuales si no fuera por estos nabos, no habrían ocurrido en primer lugar. Escribo más que nada sobre tecnología y herramientas en general, además de algunos artículos con opiniones tan subjetivas como irrelevantes, así que si no te gustan, mejor madura y superalo.