Introducción a TMUX

Si eres un usuario que disfruta del uso de la terminal, y no conoces a tmux te gustará conocer esta herramienta. Tmux es un multiplexador de terminal... qué es esto de multiplexador? esto te permite tener diferentes programas de terminal ejecutandose sobre diferentes "sesiones"

Supongamos que te conectas por ssh a tu servidor para correr algún script de respaldo que toma algunos minutos en completarse, pero tu conexión de internet no es estable y podría desconectarte en cualquier momento, si se desconecta y no ha terminado la ejecución sabes que tendrás que comenzar de nuevo.

Instalación

La instalación de tmux en las diferentes distribuciones de GNU/Linux es bastante simple:

$ sudo apt install tmux
$ sudo pacman -S tmux
$ sudo yum install epel-release; sudo yum install tmux

La instalación de tmux en OSX se realiza a través de Homebrew:

brew install tmux

Comenzando

Si desde un inicio te conectas por ssh a tu equipo y creas una nueva sesión:

Lo unico diferente que verás es la barra verde en la parte baja de la ventana de la terminal, esta barra nos da algo de información de la sesion activa de tmux, desde aquí ya podemos comenzar a usar algunos comandos de tmux que veremos a continuación:

1.- Por default tmux usa la combinación de teclas Ctrl + b + [diferentes teclas]
2.- Crear una nueva ventana: Ctrl + b + c

En la parte baja, en la barra verde vemos que se añadio "1:bash*" el asterisco indica la ventana activa.
Para ver las diferencias entre las ventanas podemos escribir un comando en la nueva ventana que creamos:
$ echo hola desde nueva ventana

para cambiar entre ventanas la combinación de teclas son las siguientes:

3.- Ctrl + b + 0
Ctrl + b + 1
Ctrl + b + 2
Ctrl + b + n...

Si presionamos Ctrl + b + 0 nos moveremos a la ventana anterior donde no hemos ejecutado ningun comando:

En estas nuevas ventanas podemos ejecutar comandos que tengan una duración mas larga de lo normal, y podemos cambiar entre ventanas y los comandos no se detendran, seguirán ejecutandose en segundo plano, de esta forma si por alguna razón nuestra sesión de ssh se desconecta nuestra sesión de tmux seguirá ejecutandose. Si este fuera el caso, cuando nos conectemos de vuelta a nuestra sesión ssh podemos listar las sesiones activas de tmux con el siguiente comando:

$ tmux ls

y nos mostrará el numero de sesión y su numero de ventanas, para conectarnos de regreso a la sesión usamos el siguiente comando:

$ tmux a -t 0
el parametro a (nos conecta a la sesión)
y el parametro -t especifica el numero de sesión


Cualquier comando que hayamos dejado ejecutandose en la sesión seguirá ahí.

Para desconectarnos manualmente de la sesión de tmux, sin cerrar las ventanas o comandos que se estan ejecutando presionamos la siguiente combinación de teclas: Ctrl + b + d

Con esto nos desconectaremos de la sesion pero seguirá ejecutandose en segundo plano y nos podremos conectar de regreso con el comando visto anteriormente:

tmux a -t 0

Paneles en tmux

Hasta ahora hemos visto como crear una sesión de tmux con algunas ventanas, como cambiar entre ventanas y salir de la sesión y volver a ella, pero una opción un poco mas avanzada en tmux es el uso de paneles, en vez de crear nuevas ventanas podemos crear paneles en ventanas.

Para crear un panel vertical con la configuración default usaremos la siguiente combinación de teclas:

Ctrl + b + %

Esto crea un nuevo panel vertical dentro de la ventana de tmux donde podremos ejecutar diferentes comandos y programas en los diferentes paneles y podremos ver el resultado de esto lado a lado.

Para cambiar entre paneles usaremos la siguiente combinación de teclas:

Ctrl + b + [flechas de dirección: arriba, abajo, izquierda, derecha]

Para crear un panel horizontal usaremos la siguiente combinación de teclas:

Ctrl + b "

Como vemos, podemos crear un panel dentro de otro y así crear layouts de paneles que se ajusten a nuestras necesidades.

Podemos cambiar el tamaño de los paneles con la combinación de teclas:

Ctrl +b + [flechas de dirección: arriba abajo izquierda derecha] sin dejar de presionar la combinación de ctrl + b

Esto es algo del uso básico de tmux, podemos crear layouts automaticos muy complejos, ejecutar procesos largos y desconectarnos de la sesión, etc. Una buena fuente para los atajos es la siguiente dirección:

Tmux Cheat Sheet