Autor Tema: TMUX - Instalación y configuración  (Leído 185 veces)

Desconectado Player-xD

  • Administrador
  • Usuario Héroe
  • *****
  • Mensajes: 802
  • Karma: +1/-2
  • ¡PrivateDofus! - El conocimiento es gratuito
    • Ver Perfil
    • ¡PrivateDofus!
TMUX - Instalación y configuración
« on: 22 de mayo de 2020, 08:36:13 pm »
TMUX - Instalación y configuración

Terminal MUltipleXer (tmux) es otra de esas herramientas que se convierte en imprescindible una vez descubres que existe.

Tmux es un multiplexador de terminales; permite lanzar múltiples terminales (ventanas y paneles) dentro de única pantalla (sesión de consola, sesión telnet/ssh, pestaña de terminal en un GUI). Cada terminal es totalmente gestionable y separada de las demás: podemos cambiar entre ellas y lanzar procesos, crear paneles dentro de cada ventana, etc.

Por ejemplo, la siguiente captura ilustra una sesión de tmux con 3 ventanas, siendo la ventana activa la 2 (puede verse en la barra de estado, en rojo). La primera y última de las ventanas no son visibles (porque la visible es la 2, véase el asterisco en la barra de estado al lado de su nombre) y están ejecutando una sesión de bash la 1 y una sesión de vim la 3).

La ventana activa (la 2) la hemos a su vez dividido en 3 paneles que están corriendo de forma separada los comandos "top" y un reloj digital, y tenemos uno de los 3 paneles reservado para teclear comandos.



Atajos:
Ctrl+B+c: Crear una nueva ventana (c de create).
Ctrl+B+n: Cambiar a la ventana siguiente (n de next).
Ctrl+B+p: Cambiar a la ventana anterior (p de previous).
Ctrl+B+NUMERO: Cambiar a la ventana número NUMERO.
Ctrl+B+&: Cerrar la ventana actual
(aunque si hacemos un exit se cierra).

Estas combinaciones de teclas se realizan pulsando Ctrl+B, soltando dicha tecla y pulsando después la tecla del comando deseado.

En nuestro caso, lo primero que haremos será cambiar dicha combinación de teclas prefijo de cada comando (Ctrl+B) por la que se usa en otros programas similares y que es mucho más cómoda: Ctrl+A.

A partir de ahora, todos los comandos que mostraremos usarán Ctrl+A (y, además, indicaremos cómo cambiar Ctrl+B por Ctrl+A en el fichero de configuración).

Como os habréis dado cuenta algunos, es similar al programa GNU screen que, al igual que tmux, permite ejecutar múltiples terminales desde una misma pantalla y cambiar entre dichas terminales, desasociarla de la terminal para dejarla corriendo en background y recuperarla desde otro PC diferente, etc.

Estas son algunas de las funciones que permite tmux:

tmux permite ejecutar múltiples ventanas dentro de una misma terminal.
Una misma ventana puede ser visible o manipulable por múltiples clientes remotos (por ejemplo, podemos compartir una sesión SSH en un servidor con un cliente que quiere ver las acciones que se realizan).
Las ventanas pueden a su vez dividirse en paneles horizontales y verticales.
Los paneles pueden a su vez dividirse en más paneles verticales y horizontales.
Es fácil moverse entre ventanas y entre paneles.
Se pueden hacer búsquedas de texto en el histórico de un panel o ventana.
Los paneles (divisiones de las ventanas) pueden redimensionarse o incluso grabarse como "layouts" predefinidos.
Soporta menúes interactivos para moverse entre ventanas, sesiones o clientes.
Soporte para UTF-8 y terminales de 256 colores.
Bloqueo de terminales manualmente o automáticamente tras un timeout.
Dettach de terminales para procesos críticos o continuación de tareas desde otro cliente.
Muchas otras funcionalidades que veremos a lo largo de este manual o en la documentación de tmux.

Instalando tmux

Podemos instalar tmux desde nuestro gestor de paquetes preferido. Si queremos hacerlo desde consola en las 2 variantes de paquetes típicas (DEB y RPM) bajo las distribuciones habituales, podemos hacerlo con:

CentOS, RedHat, Fedora: yum install tmux
Debian, Ubuntu, Mint: apt-get install tmux
Gentoo: emerge tmux

Ejecutar y utilizar tmux

Para lanzar tmux, simplemente tenemos que ejecutar tmux en una terminal de texto. Se creará en la pantalla actual una nueva sesión de tmux que contendrá una terminal:



Abajo a la izquierda podemos ver la cadena "1:bash*" que nos indica que estamos en la terminal número 1, que está ejecutando "bash", y que es la terminal activa (*).

Si quisieramos lanzar tmux directamente dándole un nombre a nuestra sesión (por si vamos a abrir varios) podemos hacerlo con tmux new -s "Nombre de sesión".

En vuestro caso, es posible que los colores varíen y que si no habéis creado el fichero de configuración básico de la anterior sección la terminal indicada sea la 0. Esto es así porque tengo un fichero de configuración con la barra de estado personalizada en cuanto a colores y funciones.

En cualquier caso, ahora podemos teclear comandos en nuestra terminal con total normalidad. Supongamos que ejecutamos top. Queremos mantener este top activo mientras seguimos trabajando en una sesión de consola, así que creamos una nueva terminal con: Ctrl+A c creamos una nueva ventana.

(Recuerda, se debe pulsar Ctrl+A, soltarlo, y luego pulsar c).

Se creará una nueva terminal con un intérprete de comandos (bash en mi caso) y ahora la barra de estado mostrará 2 terminales:



Top sigue ejecutándose en la ventana 1 sin problemas, y nosotros tenemos una nueva ventana (la 2) donde se está ejecutando bash y podemos continuar trabajando. Podríamos crear más ventanas con Ctrl+A seguido de c (tantas como necesitemos), pero para nuestro ejercicio es suficiente con estas 2.

Ahora podemos movernos entre terminales con los siguientes comandos:

Ctrl+A+n: Cambiar a la ventana siguiente (n de next).
Ctrl+A+p: Cambiar a la ventana anterior (p de previous).
Ctrl+A+NUMERO: Cambiar a la ventana número NUMERO.

Es decir, con Ctrl+A n y Ctrl+A p podemos cambiar entre nuestra ventana con "top" y la que tiene "bash".

También podemos ir a la ventana 1 (top) con Ctrl+A 1 y a la 2 (bash) con Ctrl+A 2 (de esta forma tenemos acceso a 9 ventanas de forma directa, simplemente mirando el número de la barra de estado).

Para cerrar cualquiera de la 2 ventanas, podemos salir de la shell (exit) o bien usar un atajo de teclado que mata la ventana y todos sus paneles:

Ctrl+A+&: Forzar el cierre de la ventana actual y sus paneles (matar).
exit o Ctrl+D: Si estamos en una shell y la cerramos, se cierra la ventana.

Cuando cerramos la última ventana abierta en tmux (por ejemplo con exit), también se cierra tmux en sí mismo.

Podemos trabajar de esta forma en nuestro PC en múltiples aplicaciones de texto con una única ventana / terminal (ya sea en modo texto o con un kde o gnome-terminal) sin levantar las manos del teclado. Por supuesto, si estamos usando SSH o telnet para trabajar en servidores remotos nos encontraremos que tmux es imprescindible para no tener que abrir múltiples sesiones de trabajo.

Comando extra

tmux attach -t [NombreSesion] -- Muestra la ventana de la sesion
tmux kill-session -t [NombreSesion] -- Elimina la sesion
tmux new -s [NombreSesion] -- Nueva sesion