Tmux

tmux es un multiplexor de terminal. Permite activar varias ventanas virtuales conmutables en una terminal de computadora, lo que permite correr varias aplicaciones de consola al mismo tiempo, a partir de una unica conexion al servidor.

Con Tmux te sera posible mantener una sesion activa en texto-plano, incluso si te desconectas del servidor.

Tmux es un proyecto creado por OpenBSD (Texto-plano funciona en un servidor OpenBSD).

Uso basico

Para iniciar una instancia de Tmux, simplemente escribe:

tmux

Al iniciar el entorno Tmux, normalmente presentara una sesion unica con una sola ventana, cargando en ella tu interprete de comandos, como cualquier otro emulador de terminal. Como particularidad, en la linea inferior de la consola veras la barra de estado de Tmux (normalmente en color verde).

Naturalmente, podras operar en la sesion de Tmux como ya sabes hacerlo.

Controlar Ventanas

Las ventanas de Tmux te permiten ejercer multitarea, ya que en cada una de ellas podras tener procesos en ejecucion.

Empieza por crear una nueva ventana (en cada una de estas ventanas podras ejecutar un programa que desees).

Utiliza la combinacion Ctrl+b,c, y crearas una segunda ventana de terminal; en ella se cargara una segunda instancia de tu interprete de comandos. En la barra de estado inferior aparecera un nuevo nombre de ventana (inicialmente 0:ksh?, 1:ksh, 2:ksh, etc, pues "ksh" constituye el interprete de comandos que texto-plano.xyz utiliza por defecto).

Conmutar entre Ventanas

Utiliza Ctrl+b,n para colocar en pantalla la ventana siguiente, y Ctrl+b,p para poner en pantalla la ventana anterior. Podras distinguir la ventana activa mediante el indicativo * en la barra de estado de Tmux.

Cerrar Ventanas

Para cerrar ventanas, debes cerrar los programas en ejecucion (si los hubiese), e introducir el comando exit para cerrar el interprete de comandos (como en cualquier sesion de terminal comun y corriente), o bien -en caso de haberse colgado un programa o proceso- forzar su cierre mediante Ctrl+b,&.

Controlar Paneles

Sin duda la caracteristica mas sobresaliente que ofrece Tmux es la posibilidad de subdividir la ventana actual en "paneles", tanto vertical como horizontalmente.

Utiliza Ctrl+b," y Ctrl+b,% para subdividir la ventana en paneles horizontales y verticales respectivamente. Naturlamente, estos tendran un tamano menor al de la ventana completa.

Cuanto mas ventanas y paneles sumes a tu sesion de Tmux, podrias notar cierta perdida de performance.

Conmutar entre paneles

Conmuta el panel activo de la ventana actual con Ctrl+b,o. Tambien es util la opcion de seleccionar el panel de la ventana deseada, eligiendola de un listado abarcativo, que puedes presentar con Ctrl+b,w.

Redimensionar Paneles

Existen varias maneras de redimensionar los paneles, pero la mas simple es conmutar entre las diferentes disenos de panelado que vienen ya preconfigurados en tmux. Esta funcion se realiza con Ctrl+b,Barra espaciadora.

Ten en cuenta que ciertas aplicaciones de terminal podrian requerir un panel no menor a cierta dimension dada para poder funcionar.

Cerrar Paneles

Cierra los programas del panel activo (si lo hubiese) y al retornar a la shell, introduce el comando exit. La subdivision de paneles se eliminara hasta volver a una ventana (de panel unico, claro esta).

Uso Avanzado

¿Como salir de la sesion de tmux sin matar el servidor?

Tmux emplea el clasico modelo cliente-servidor de otros emuladores de terminal, pero puede tener multiples sesiones y cada ventana es una entidad independiente que puede ser enlazada libremente a multiples sesiones, se puede anclar (esto es, disponerla para usar en ella el teclado como dispositivo de entrada).

Si bien recomendamos siempre guardar tus trabajos en los medios que texto-plano.xyz pone a tu disposicion, esto te permitira opcionalmente dejar tu sesion activa en el servidor con un trabajo para continuarla luego (podras desconectarte y retomar donde estabas).

Presiona Ctrl+b,d y desconectaras la sesion del multiplexor, aunque - como el servidor Tmux esta todavia encendido, dicha sesion no estara perdida - por lo que si algun proceso en ejecucion sigue activo, no morira al concluir esta operacion.

¿Como recupero una sesion de tmux?

Primero deberas conocer el listado de tus sesiones inactivas de Tmux, (ya que es posible tener varias inactivas). Para ello utiliza el siguiente comando en la shell de nuestro sistema:

tmux ls

Se te presentara un listado que guarda el siguiente formato:

0: 1 ksh (created Mon Jul 12 17:49:23 2021)
1: 1 ksh (created Mon Jul 12 17:50:34 2021)

Inicialmente tienen el mismo sistema de nombramiento que las ventanas, o en otra palabras, son nombradas a partir del 0 y se aumentan secuencialmente por cada nueva sesion creada. En otras palabras, la sintaxis es [nombre de la sesion]: [numero de ventanas] (fecha de creacion).

En este caso, si deseas acceder nuevamente a la sesion 1, deberas conectar el multiplexor a ella mediante:

tmux attach -t 1

¿Como muevo una ventana de lugar?

Esto es un poco mas complejo pero se hace asi:

Primero: Ctrl+b seguido de :.

Segundo (escribimos):

swap-window -s [numero de la ventana] -t [posicion que queremos]

Inicio de tmux con Mosh

Con esto podras usar Tmux para iniciar una sesion en texto-plano.xyz desde Mosh, evitando hacerlo en paralelo.

Crea un fichero ejecutable ~/bin/tmux_start. Luego genera un alias:

‎alias tp='mosh --ssh="ssh -p 22 -i llave_tp_fulana.key" fulana@texto-plano.xyz tmux_start'

Ahora, para ingresar a texto-plano.xyz

‎===Configuracion de Tmux=== El fichero de configuracion opcional de Tmux es ~/.tmux.conf.

Comandos de Tmux

Como has visto, casi todos los comandos de Tmux se activan con el atajo Ctrl+b, a lo que se suma otro caracter, combinacion o palabras para activar uno de las operaciones.

Comandos Generales
Ctrl+b,? Ayuda de los atajos de Tmux
Ctrl+b,t Presenta la hora :)
Ctrl+b,d Desconecta la terminal de la sesion de Tmux (sale de Tmux dejandolo activo)
Ventanas
Ctrl+b,c Crea una ventana nueva en la Sesion.
Ctrl+b,n Presenta en pantalla la Ventana siguiente
Ctrl+b,p Presenta en pantalla la Ventana previa
Ctrl+b,w Presenta en pantalla el listado abarcativo de ventanas/paneles
Ctrl+b,' nro. de ventana Te desplaza al nro. de ventana
Ctrl+b,& Fuerza el cierre (mata los procesos) de la ventana actual (solicitara confirmacion)
Ctrl+b,l Se mueve a la proxima ventana seleccionado
Ctrl+b,, Renombra la ventana actual
Manejo de paneles
Ctrl+b,% Divide la ventana actual en paneles verticales.
Ctrl+b," Divide la ventana actual paneles horizontales.
Ctrl+b,o Activa el panel siguiente.
Ctrl+b,q Presenta los numeros de panel. Introduciendo el numero desplazara al panel indicado.
Ctrl+b,{ Desplaza el panel actual a la izquierda.
Ctrl+b,} Desplaza el panel actual a la derecha.
Redimensionado de paneles
Ctrl+b,: resize-pane Achica el panel actual (por defecto)
Ctrl+b,: resize-pane 20 Cambia el tamano del panel actual achicandolo 20 celdas
Ctrl+b,: resize-pane -U Cambia el tamano del panel actual hacia arriba
Ctrl+b,: resize-pane -U 20 Cambia el tamano del panel actual hacia arriba 20 celdas
Ctrl+b,: resize-pane -L Cambia el tamano del panel actual hacia la izq
Ctrl+b,: resize-pane -L 20 Cambia el tamano del panel actual hacia la izq 20 celdas
Ctrl+b,: resize-pane -R Cambia el tamano del panel actual hacia la der
Ctrl+b,: resize-pane -R 20 Cambia el tamano del panel actual hacia der 20 celdas
Ctrl+b,: resize-pane -t 2 20 Cambia el tamano del panel identificado como 2 achicandolo 20 celdas
Ctrl+b,: resize-pane -t -L 20 Cambia el tamano del panel id2 a la izq 20 celdas

Terminologia de Tmux

Termino Traduccion Significado
Session Sesion Grupos de una o mas ventanas juntas
Session name Nombre de la sesion El nombre de la sesion, que por defecto es un numero empezando desde cero
Window Ventana Grupos de uno o mas paneles juntos, enlazados a una o mas sesiones
Current window Ventana activa La ventana activa en la sesion adjuntada que se puede escribir; uno por sesion
Last window Ultima ventana Ultima ventana invocada
Window list Lista de ventanas Listado de ventanas en una sesion en orden numerico
Window index Indice de la ventana El numero de una ventana en una lista de ventanas de una sesion
Window layout Diseno de ventana El tamano y posicion de los paneles en una ventana
Pane Panel Contiene una terminal y un programa en ejecucion, presentado en en una ventana
Active pane Panel activo El panel en la ventana actual que contiiene el cursor para escribir; uno por ventana
Detach Desconectar Desconecta el multiplexor de una sesion activa
Attach Conectar Conecta el multiplexor a una sesion inactiva
Prefix Prefijo a combinacion de teclas que usa Tmux para ejecutar comandos, por defecto Ctrl+b

Mas informacion: https://github.com/tmux/tmux/wiki/Getting-Started#basic-concepts

Gestor de Paquetes tpm

tpm es un gestor de paquetes para tmux, muy simple, ligero y facil de usar.

Para instalarlo, clona su repositorio en tu directorio:

git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm

Coloca luego lo siguiente en nuestro archivo de configuracion ubicado en ~/.tmux.conf:

run '~/.tmux/plugins/tpm/tpm'

Y si tenemos una sesion en ejecucion, es necesario presionar prefix+: y ejecutar lo siguiente:

source-file ~/.tmux.conf

Eso recargaria la configuracion de tmux en ejecucion.

Mas informacion: https://github.com/tmux-plugins/tpm

tmux-themepack

tmux es altamente configurable, tanto que hasta su interfaz se puede configurar, pero por suerte de los novicios, hay personas que han creados soluciones sencillas de usar. Usaremos tpm, que fue descrita en la anterior seccion.

Primero que nada es necesario elegir un tema, y luego escribir tanto el tema seleccionado como la variable que le indica a tpm que debe instalar el plugin jimeh/tmux-themepack; todo esto debe estar antes de ejecutar el comando inicial de tpm. Todo deberia quedar asi:

# Plugins
set -g @plugin 'jimeh/tmux-themepack'

# tmux-themepack (configuracion)
set -g @themepack 'powerline/block/blue'

# Comando inicial de tpm
run '~/.tmux/plugins/tpm/tpm'

Ahora en tmux, y con los cambios ya guardados, se debe ejecutar prefix+I y se congelara todo hasta que se termine de instalar todos los plugins. Cuando concluya, nuestra sesion se convertira en un lindo azul.


Hay muchas mas cosas que se pueden hacer pero esto es lo fundamental para poder usar nuestra sesion SSH de una forma eficiente y mantener procesos funcionando cuando apaguemos nuestro pc en casa. Uno de los casos mas comunes es mantener una sesion de IRC activa.

Cualquier consulta a admin arroba texto-plano.xyz

Video de TMUX en accion