Tmux: otro nivel en la interacción con tus terminales
Todos hemos quedado fascinados en algún momento con aquellos hackers que nos presenta Hollywood que, con pulsaciones rápidas y repetitivas sobre el teclado, en 7 segundos son capaces de burlar cortafuegos y desactivar defensas o lanzar ataques nucleares 😂.
Ciertamente, esto es solo ficción. El trabajo de un hacker no es tan dinámico y se requiere mucho tiempo y estudio del objetivo para lograr algo significativo.
Pero de esta imagen presentada por la industria cinematográfica sí podemos sacar algo que nos puede ayudar mucho en nuestro trabajo diario, la creación de un espacio de trabajo con pantalla divida en varios terminales.
Resulta que existe una herramienta llamada tmux que te permite mejorar tu experiencia de usuario en la interacción con la línea de comando y este artículo estará dedicado a entender como podemos interactuar con ella para obtener los mejores resultados. Comencemos.
¿Qué es Tmux?
Se trata de una aplicación de línea de comandos que permite dividir y organizar tu terminal en diferentes paneles y ventanas virtuales.
Esto es útil para realizar varias tareas al mismo tiempo sin tener que abrir múltiples terminales o para mantener sesiones de terminal activas mientras te desconectas de una computadora.
Además, ofrece una serie de opciones de personalización y configuración para adaptarse a tus necesidades.
Ahorra en software
Únete al boletín premium semanal con los mejores lifetime deals y ofertas de software.
Características de Tmux
- Dividir la terminal en paneles: se pueden crear varios paneles en una misma ventana y ejecutar diferentes aplicaciones en cada uno de ellos.
- Sesiones de terminal: se pueden crear sesiones de terminal y conectarse a ellas desde diferentes terminales. Esto es útil para mantener una sesión de terminal activa mientras se está conectado a un servidor remoto.
- Historial de sesión: guarda el historial de la sesión, lo que permite volver a ver comandos ejecutados previamente.
- Detach y attach: se puede desconectar de una sesión y volver a conectarse más tarde, manteniendo todas las aplicaciones y el estado de la sesión en el mismo lugar.
De forma general es muy útil para administradores de sistemas y desarrolladores que trabajan con servidores remotos y necesitan ejecutar varias tareas de forma simultánea.
También es popular entre los usuarios avanzados de terminal que desean tener una mayor flexibilidad y control sobre sus sesiones de terminal.
¿Personalmente, para qué utilizo Tmux?
Yo dividiría el uso de esta herramienta en 2 propósitos diferentes. El primero es una cuestión estética y de comodidad y es a la que hacíamos referencia en la introducción. Poder dividir una terminal en varios espacios de trabajo con una terminal en cada uno que puede ejecutar comandos diferentes.
El otro de los usos que le doy, y para mí el más importante, es la protección de sesiones remotas.
Resulta que en ocasiones necesito entrar a un servidor por el protocolo SSH, para ejecutar un proceso que demora mucho tiempo, y necesito salir de la sesión sin que el servidor cierre el proceso que se debe quedar ejecutando.
Para esto, la herramienta te deja crear terminales virtuales que protegen estos procesos del cierre de sesión. De este modo puedo desconectarme tranquilamente del servidor y se mantendrá ejecutándose el proceso todo el tiempo que sea necesario sin interrupción.
Al volver a entrar al servidor, solamente tengo que volver a entrar a la terminal virtual creada previamente y puedo ver los resultados del proceso que dejé ejecutando.
Veamos ahora como podemos instalar y trabajar con este programa.
Instalación
Te recomiendo que primeo verifiques si ya se encuentra instalado, ya que en algunos sistemas ya viene por defecto. Puedes usar el siguiente comando para realizar esta comprobación:
tmux -V
Si ya se encuentra en tu sistema, el comando te devolverá la versión. En caso contrario puedes instalar la herramienta con este comando:
sudo apt install tmux
Funcionamiento
Una vez instalado tmux, puede iniciarlo ejecutando el comando tmux.
Esto te llevará a una nueva sesión de tmux con una sola ventana. Puedes crear más ventanas en tu sesión usando el comando Ctrl+b C.
Puedes alternar entre las ventanas de tu sesión usando el comando Ctrl+b N, donde N es el número de la ventana a la que quieres acceder.
En la imagen puedes ver las dos ventanas que creamos y el asterisco indica que está activa la ventana 0.
Podemos renombrar estas ventanas con el comando Ctrl+b ,
De este modo podemos crear todas las terminales virtuales que deseemos y ejecutar en ellas procesos distintos.
Dividir terminal
Veamos ahora como dividir la terminal para no tener que estar cambiando si ejecutamos varios procesos a la vez.
Para dividir la pantalla horizontalmente necesitamos utilizar el comando Ctrl+b “
Ahora dividiremos el panel de abajo verticalmente. Para esto necesitamos primeramente desplazarnos hacia el panel objetivo con el comando: Ctrl+b ↓. Este será un patrón que estaremos aplicando constantemente, el uso de Ctrl+b para que la herramienta se ponga a la escucha y luego la flecha que queramos para desplazarnos por los paneles.
Una vez en el panel inferior ejecutamos Ctrl+b % para dividirlo verticalmente.
De este modo podemos crear todos los paneles que necesitemos para trabajar más cómodos.
Proteger procesos con tmux
Hasta el momento hemos visto como crear ventanas y dividirlas en paneles para facilitar el trabajo con nuestros terminales. Nos queda pendiente el cómo proteger procesos que se inician de forma remota para que cuando se cierre la sesión no se detengan.
Por defecto, una vez que iniciamos la ejecución de algún proceso en una sesión de tmux, este queda protegido y ya podemos cerrar la sesión tranquilamente.
Si queremos dejarlo en segundo plano y seguir trabajando podemos utilizar el comando Ctrl+b d.
Podemos listar en cualquier comento las sesiones abiertas con el comando tmux ls y retomar cualquiera de las sesiones utilizando tmux attach -t nombre_sesion.
▶️ Otros artículos que te pueden interesar:
Resumen de comandos
tmux new -s nombre_sesion: Iniciar una nueva sesión de tmux con el nombre «nombre_sesion»
tmux attach: Retomar la última sesión de tmux en la que hayas trabajado
tmux attach -t nombre_sesion: Retomar la sesión de tmux con el nombre «nombre_sesion»
Ctrl+b c: Crear una nueva ventana en tmux
Ctrl+b n: Ir a la siguiente ventana en tmux
Ctrl+b p: Ir a la ventana anterior en tmux
Ctrl+b %: Dividir la ventana de tmux verticalmente
Ctrl+b «: Dividir la ventana de tmux horizontalmente
Ctrl+b o: Alternar entre terminales virtuales en tmux
Ctrl+b x: Cerrar la terminal virtual actual en tmux
Ctrl+b d: Detener la sesión de tmux actual
Ctrl+b ?: Mostrar la lista de comandos de tmux
Puedes ver las combinaciones de teclado para cada una de sus funcionalidades aquí.
Herramientas similares
screen: Es una herramienta de terminal muy similar a tmux que te permite trabajar con varias terminales virtuales en una sola ventana.
byobu: Es una interfaz de usuario para screen y tmux que proporciona una serie de características adicionales, como un menú de configuración y una pantalla de inicio.
tmuxinator: Es una herramienta que te permite configurar y administrar fácilmente sesiones de tmux.
Para Windows, tenemos las siguientes alternativas:
ConEmu: Es una herramienta de terminal gratuita y de código abierto.
Windows Terminal: Es una herramienta de terminal de Microsoft.
Hyper: Es una herramienta de terminal basada en Node.js.
Conclusiones
- Tmux es un multiplexor de terminal que te permite trabajar con múltiples terminales virtuales en una sola ventana.
- Una de sus principales ventajas es que te permite mantener varias sesiones de terminal en segundo plano, incluso si cierras la ventana de terminal o te desconectas del servidor. Esto puede ser especialmente útil si estás trabajando en una tarea de larga duración y quieres poder continuar trabajando en ella más tarde.
- También ofrece una serie de características que pueden ayudarte a trabajar de manera más eficiente, como la posibilidad de dividir la ventana de terminal en varios paneles, cambiar entre terminales virtuales y navegar entre ventanas.
- Se puede utilizar para una variedad de tareas, como ejecutar y gestionar múltiples sesiones de terminal, ejecutar procesos de larga duración y trabajar con múltiples servidores.
Para sacarle el mayor provecho a esta herramienta, es importante familiarizarse con sus comandos y características básicas. Por esto te invito a que revises su web oficial para que revises a profundidad todas las opciones que brinda.
Web oficial: https://github.com/tmux/tmux/wiki
Si te interesa el contenido de este artículo quiero invitarte a que le des una ojeada a nuestra selección de herramientas para gestionar entornos virtuales en Python.