Tmux, una aplicación para dominar nuestras consolas

La terminal de unix lleva décadas ofreciendo utilidades no solamente a desarrolladores y administradores de sistemas a nivel de servidor, sino también a entusiastas en entornos de escritorio.

El uso de herramientas como git, o nodejs, ha traído un uso mayor de la consola a los entornos locales, y también la necesidad, a veces, de estar conectados a terminales remotos vía SSH.

El problema de una conexión por SSH es que si tenemos un fallo de red o suspendemos nuestro ordenador, nuestra conexión se puede ver afectada, lo que causará que nuestra sesión termine, y con ella los comandos que estemos ejecutando.

Existen utilidades que no solamente nos permiten prevenir esta circunstancia sino que nos permiten tener una configuración en nuestra terminal remota que haga más sencilla la conexión. En el artículo de hoy hablaremos de tmux, una solución que nos permite controlar múltiples ventanas y mantener la configuración de las mismas.

Instalando tmux

La fuerza de tmux radica cuando lo instalamos de manera remota en un servidor al que accedamos con frecuencia. En mi caso particular, me suelo conectar vía SSH a hosts que emplean Amazon Linux en la nube de AWS y usamos yum como gestor de paquetes, con lo cual el comando es:

yum install tmux

Podemos también instalar tmux en local y tener una configuración de consolas personalizada. En el caso de Mac podemos instalar tmux vía homebrew:

brew install tmux

Si tenemos Windows y WSL tendremos acceso a una shell de bash, en la que podemos instalar tmux utilizando:

apt-get install tmux

Utilizando tmux

La manera más sencilla de utilizar tmux es como una capa por encima de la terminal.

tmux

Este comando inicia una sesión de tmux que permanecerá activa incluso si nuestra conexión se cierra o en el caso de que estemos ejecutando de manera local, si cerramos la ventana. Este comportamiento se mantiene tanto en local (Mac) como en una sesión SSH, no sé que pasaría en Windows

Si cerramos la ventana nuestra sesión de tmux seguirá funcionando, así que para salir de la misma podemos utilizar o bien Ctrl + d o bien escribir logouto exiten la consola de comandos.

Por defecto. las sesiones en tmux están numeradas, para volver a una sesión solamente necesitamos escribir tmux lsy a continuación tmux attach -t Ndonde N es el número de sesión. Por otra parte podemos darle nombre a nuestras sesiones, lo que hará que volver a ellas sea mucho más sencillo.

  • Creamos nuestra sesión contmux new -s desarrollo
  • Volvemos a la misma con tmux attach -t desarrollo

Múltiples pestañas, pantalla dividida y más

Una vez tengamos nuestra sesión abierta, podemos personalizarlo utilizando Ctrl + bque es el prefijo por defecto en tmux, una vez pulsado, los siguientes comandos nos pueden ayudar:

  • Dividir el panel de manera horizontal
  • %Dividir el panel de manera vertical
  • derecha/izquierda/arriba/abajoDesplazarse por los paneles
  • cCrear una nueva ventana
  • nCambiar a la ventana siguiente
  • pCambiar a la ventana anterior

En el siguiente ejemplo (ejecutado de manera local) se puede ver una sesión con dos ventanas y tres paneles.

Si cerramos la ventana y volvemos a la sesión se mantendrá abierta.

Tmux con iTerm (Mac)

Si utilizamos Mac con iTerm, este último tiene integración con Tmux, con lo cual podemos crear los paneles utilizando la manera nativa que estamos acostumbrados en iTerm, y podremos intercambiarlos con los controles nativos.

Para ello abriremos nuestra sesión con tmux -CC newo tmux -CC attach

Iterm, por defecto, abre nuevas pestañas de Tmux en ventanas, con lo cual para cambiar esa configuración podemos ir a Preferences > general > tmux > Open tmux windows as “Tabs in attaching window” como se ve en la imagen

Personalizando nuestra configuración

El último paso es tener nuestra configuración guardada de manera persistente de tal manera que “sobreviva” un reinicio del sistema o si queremos simplemente poder volver a una configuración estable.

Para ello, usemos el ejemplo que he descrito anteriormente en un script de bash:

#!/bin/sh
tmux new-session -d 'ping www.google.com'
tmux split-window -h 'top'
tmux select-pane -t 0
tmux split-window -v 'vim'
tmux new-window 'tail -f /var/log/system.log'
tmux -CC -2 attach-session -d

Este script lo podemos guardar como reset-session.sh y podemos llamarlo siempre que queramos restaurar la configuración de la sesión que teníamos anteriormente.

En resumen

Tmux es una herramienta muy poderosa que nos permite personalizar la configuración de nuestras ventanas, mantener procesos en ejecución dentro de una consola remota y guardar esta personalización para poder restaurar un espacio de trabajo a nuestro gusto.

Bibliografía

Autor: Roberto Luis Bisbé

Software Developer, Computer Engineer

Deja un comentario

Este sitio utiliza Akismet para reducir el spam. Conoce cómo se procesan los datos de tus comentarios.