Cómo usar tmux

Seguramente habrás oído hablar de tmux. Hoy hablaremos de cómo usar tmux, es decir de: qué es, para qué sirve y como utilizarlo.

¿Qué es TMUX?

El comando tmux es un multiplexor de terminales, como también lo es el comando screen. En este Articulo vamos a comparar los dos ¿Es tmux realmente mejor, o es solo es un tema de preferencias?

Pero ¿Qué es un multiplexor de terminales?

Bien, un multiplexor de terminales es un sistema que nos permite tener pseudo-terminales “dentro de una terminal”. Es decir, cuando ejecutamos el comando screen o tmux  por ejemplo podemos salir de la sesión de screen  pero mas tarde podemos volver a entrar y recuperar la sesión (y el programa a continuado su ejecución si se estaba ejecutando). Esto es útil para evitar que se nos corte la ejecución de un comando si se nos corta la conexión por ejemplo. Con tmux, también podemos dividir la pantalla en varias terminales, agrandar una volver a la división de pantallas etc.

Instalación de tmux

La instalación de tmux es realmente simple. en ubuntu por ejemplo:

sudo apt-get install tmux

En sistemas basados en redhat:

yum install tmux

Y en sistemas basados en Arch Linux:

sudo pacman -Sy tmux

Iniciar una sesión tmux

Para iniciar una nueva sesión solo tienes que escribir en la terminal tmux y pulsar enter.

Cuando iniciamos una nueva sesión de tmux, veremos en la barra una barra de estado que muestra el nombre del host la fecha y la hora. En el lado izquierdo se muestra mas información relacionada con la sesión:

  • [0]: Indica el nombre de la sesión, por defecto se representa por números comenzando por cero.
  • 0: bash *: El 0 indica el numero de ventana, en este caso es la primera ventana de la sesión. Se está ejecutando bash en esta ventana, si ejecuta otra aplicación el nombre de esta sustituirá a bash. El asterisco representa que es la ventana que tiene el foco. Cada vez que abras una nueva sesión, ventana o programa estos datos se modifican.

Una de las diferencias que tiene el comando tmux con screen es precisamente esta barra de estado, con screen no dispones de ella.

Lanzar una sesión con nombre personalizado

Para modificar el nombre de la sesión debemos ejecutar el comando tmux de la siguiente forma:

tmux nuevo -s NOMBRE

Es decir, si queremos nombrar a la sesión my-session1 sería:

tmux nuevo -s my-session1

En la barra de estado nos mostrará: [my-session1] 0:bash* 

Cómo comenzar con tmux

La aplicación tmux  tiene muchísimas opciones, para acceder a ellas tienes que pulsar las teclas CTRL+b y después de pulsar estas dos teclas juntas pulsar solo la tecla que se indique en el comando.

Listar sesiones activas de tmux

Para listar sesiones activas con tmux se hace exactamente igual que con screen, usando el subcomando tmux ls como podemos ver a continuación:

ger@host:~$ tmux ls
1: 1 windows (created Thu Oct 27 07:50:46 2022)
ger@host:~$

El primer numero que aparece es el nombre de la sesión, en caso de hacerla puesto de nombre “mysess” se vería así:

ger@host:~$ tmux ls
mysess: 1 windows (created Thu Oct 27 07:50:46 2022)
ger@host:~$

Recuperar sesiones activas

Tras listar las sesiones activas podemos recuperarlas con tmux attach -t SESSION_NAME donde SESSION_NAME es el nombre de sesión como se puede ver a continuación:

ger@host:~$ tmux ls
mysess: 1 windows (created Thu Oct 27 07:20:46 2022)
ger@host:~$ tmux attach -t mysess

 

Salir de la sesión actual dejándola en background

Si estamos dentro de una sesión y queremos dejarla en segundo plano, podemos ejecutar CTRL+b y después d para dejar la sesión corriendo en segundo plano:

Esto nos puede ser útil para dejar tareas de largo tiempo de ejecución en segundo plano y volver a recuperar la sesión mas adelante, como haríamos con screen.

Tener scroll en tmux

Si te has puesto a “jugar” con tmux puedes pensar que no tiene scroll, si necesitas hacer scroll, debes pulsar CTRL+b y después RE-PAG con esto ya podrás hacer scroll sin problema o desplazarte con las flecas direccionales de arriba y abajo.

 

Listado de comandos para tmux

Un resumen rápido de lo que se puede hacer a groso modo sería lo siguiente:

Comandos de sesión

AcciónComandoDescripción
Crear nueva sesióntmux new -s SESSION_NAMECrea una nueva sesión de tmux
Entrar en sesión activa de tmuxtmux attach -t SESSION_NAMERecupera una sesión activa
Listar sesiones activas de tmuxtmux lsLista sesiones de tmux
Dejar sesión  en backgroundCTRL+b y después dDeja corriendo en segundo plano una sesión de tmux

Comandos de ventana

AcciónComando (a ejecutar despues de CTRL+b)Descripción
Crear nueva ventanacCrea una nueva ventana en la sesión activa
Cambiar a siguiente ventananCambia a la siguiente ventana dentro de la sesión activa
Cambiar a ventana anteriorpCambia a la ventana anterior de la sesión activa
Cerrar ventanaxCerrar ventana activa de la sesión actual (pide confirmación)

Comandos de panel

 

AcciónComando (a ejecutar despues de CTRL+b)Descripción
Dividir la ventana actual horizontalmenteDividir horizontalmente la ventana activa en 2 paneles (2 terminales)
Dividir la ventana actual verticalmente%Dividir verticalmente ventana activa en 2 paneles (2 terminales)
Cambiar de panel activoFlecha direccionalCambiar de panel activo usando las flechas direccionales para elegir la dirección del panel al que cambiar
Mostrar brevemente números de panelqCada panel tiene un numero asignado, este comando los muestra por un corto tiempo
Desplazarse por los paneles en orden hasta recorrer todos.o
Intercambia la posición del panel actual con el siguiente.}Intercambia la posición de los paneles con el siguiente incluso si ambos tienen algo en ejecución.
 Intercambia la posición del panel actual con el anterior.{Intercambia la posición de los paneles con el anterior incluso si ambos tienen algo en ejecución.
Cierra el panel actual.xCierra el panel actual (pide confirmación)
Maximiza o vuelve a tamaño normal el panel actualzMaximiza o vuelve a tamaño normal el panel actual, es decir, si está la ventana dividida en paneles amplia el panel actual o vuelve a mostrar todos los paneles si habías ampliado un panel previamente.

 

Deja una respuesta