Hola en un nuevo post, como ya comentamos en el post de screen, existen diferentes herramientas para dividir nuestra terminal en ventanas que nos faciliten el trabajo del día a día, sobre todo si son procesos largos. En este caso os traemos Tmux.
Tmux (Terminal Multiplexer) nos permite habilitar múltiples sesiones, ventanas y paneles que son controladas desde un mismo terminal. Esta herramienta es compatible con plataformas como Linux, Mac OS X, FreeBSD, OpenBSD, NetBSD y Solaris.
Comenzaremos instalando esta herramienta en linux con el comando
apt-get install tmux
Una vez instalado, crearemos nuestra primera sesión con el comando
tmux new -s nombre_sesion
Esto iniciará una nueva sesión del terminal tmux, en nuestro caso, hemos llamado a la sesión byte-mind. Si nos fijamos en la barra inferior de la terminal podemos ver el nombre de la sesión, seguido del número de la ventana en dicha sesión, en nuestro caso sería la ventana 0. Por defecto en debian las ventanas tendrán el nombre bash, el cual vemos en la imagen, seguido del * que indica que es la ventana activa.
Al igual que screen, tmux está enfocado en el uso de atajos de teclado, para ejecutar cualquier operación deberemos pulsar CTRL + b seguido de la o las teclas de la acción que deseamos realizar. Al final de este post incluiré un listado de los posibles comandos de esta utilidad.
La primera ventana ya la tenemos pero, podemos crear una nueva con el comando
CTRL + b y después c
Ahora crearemos nuestro primer panel en la ventana, esto la dividirá horizontal o verticalmente.
CTRL + B y después % para dividirla verticalmente
CTRL + b y después " para dividirla horizontalmente
Nosotros vamos a crear una división de cada una
Como vemos en la imagen hemos dvidido la primera ventana en 2 paneles verticales y el segundo panel vertical en dos horizontales. Para poder cambiar entre los diferentes paneles podemos hacer uso de los siguientes comandos
CTRL + b y después o
para pasar al siguiente panel
CTRL + b y después q
nos aparecerá el número de cada panel, pulsamos el número del panel seleccionado
Si queremos eliminar un panel tendríamos que pulsar la siguiente combinación
CTRL + b y después x
Una vez que sabemos como cambiar entre paneles, si tenemos ventanas, como lo hacemos
CTRL + b y después n
para ir a la siguiente ventana
CTRL + b y después p
y seleccionar la ventana que queremos
CTRL + b y después número de ventana
Attached and Dettached
Una vez tenemos una sesión ya con una serie de comandos en proceso, que pasa si queremos ponernos a trabajar con otra sesión, como podemos hacerlo. Primero para poder desatarnos de la sesión actual utilizaremos la siguiente combinación de teclas
CTRL + b y después d
Pero, y ahora como podemos recuperar nuestra sesión. Podemos ver un listado de sesiones con el comando
tmux list-sessions
y después acceder a ella con el comando
tmux attach-session -t nombre_sesion
Esto reanudará nuestra sesión tal cual y como la dejamos en su momento.
Programación Anfitrión Invitado
Otro de los usos muy interesantes de Tmux es la posibilidad de la programación remota entre anfitrión e invitado. Para esto se recomienda construir una sesión de usuario aparte para asegurar que nadie acceda a nuestra información. En este caso, lo haremos con un usuario normal.
Lo primero será especificar el socket que usará, para ello debemos crearlo y darle los permisos necesarios para que el resto de usuarios pueda ejecutarlo.
tmux -S /tmp/anfitrion
chmod 755 /tmp/anfitrion
Una vez creada la sesión y otorgados los permisos, accedemos vía ssh al equipo anfitrión y accedemos a la sesión, para ello una vez conectados ejecutamos el siguiente comando
tmux -S /tmp/anfitrion attach
Como podemos ver en la imagen, tenemos la máquina física (anfitrión) y una máquina virtual (invitado) en donde ambos están trabajando en la misma sesión y, lo que uno escribe el otro lo visualiza en tiempo real.
Además, podemos ver unas líneas de puntos en la ventana del anfitrión, esto indica que esta ventana es más grande y el espacio extra se cubre de esta forma.
Si estas interesado en este tipo de herramientas y sobre todo en la programación por terminal en pareja, te recomendamos investigar sobre Tmate y Wemux, ambas basadas en Tmux y que ofrecen diferentes ventajas centradas en este modo de trabajo.
Hoja de atajos
Para terminar y, como lo prometido es deuda, aquí os dejo una tabla con un listado de atajos de teclado disponibles en esta herramienta.
Acción | Atajo |
---|---|
Crear nueva ventana | Ctrl-b c |
Eliminar ventana actual | Ctrl-b & |
Mover a ventana siguiente | Ctrl-b n |
Mover a ventana anterior | Ctrl-b p |
Mover a ventana especifica | Ctrl-b <num ventana> |
Mover a ultima ventana seleccionada | Ctrl-b l |
Mostar ventanas (al seleccionar una se irá a ella) | Ctrl-b w |
Dividir panel verticalmente | Ctrl-b % |
Dividir panel horizontalmente | Ctrl-b " |
Ciclar entre paneles | Ctrl-b o |
Mostar paneles (al seleccionar uno rapidamente, se irá a él) | Ctrl-b q |
Mover panel actual a la derecha | Ctrl-b } |
Mover panel actual a la izquierda | Ctrl-b { |
Eliminar panel actual | Ctrl-b x |
Eliminar todos los paneles excepto el actual | Ctrl-b ! |
Mostrar la hora | Ctrl-b t |
Desatar de la sesión | Ctrl-b d |
Mostar sesiones (al seleccionar una se irá a ella) | Ctrl-b s |
Renombrar sesión | Ctrl-b $ |
Escribir en consola de comandos (comandos avanzados) | Ctrl-b : |
Mostar atajos | Ctrl-b ? |
Gracias por visitarnos en otro post y no se olviden de comentar su opinión, dudas, etc.