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.

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.

Leave a Reply

Your email address will not be published. Required fields are marked *

Discover more from Alvaro De León

Subscribe now to keep reading and get access to the full archive.

Continue reading