Cómo usar tmux en Linux (y Por qué es Mejor que Screen)
- Dave McKay
@TheGurkha
- 14 de mayo de 2020, 8:00am EDT
El comando Linux tmux
es un multiplexor de terminal, como screen
. Sus defensores son muchos y vocales, así que decidimos comparar los dos. ¿Es tmux
realmente mejor, o es solo un caso de preferir lo que sabes?
- tmux vs screen
- ¿Cuál es el comando screen?
- Instalar tmux
- Iniciar una sesión tmux
- Iniciar una Sesión de tmux con nombre
- Añadir más Ventanas
- Separar y adjuntar sesiones
- el Manejo de Múltiples Sesiones
- Trabajar con paneles de ventana
- Una hoja de trucos Ctrl+B
- Comandos de sesión
- Comandos de ventana
- Comandos de panel
- Cómo Se Comparan
tmux vs screen
Los comandos tmux
y GNU screen
son multiplexores de terminal. Le permiten tener varias ventanas dentro de una sola ventana de terminal, y saltar de un lado a otro entre ellas. Una ventana se puede dividir en paneles, cada uno de los cuales le da una línea de comandos independiente.
También puede separar una sesión y se convierte en una entidad sin cabeza que se ejecuta en segundo plano, incluso puede cerrar la ventana de terminal que la inició. Cuando esté listo, puede abrir una nueva ventana de terminal y volver a conectar la sesión en ejecución. También puede hacer esto a través de una conexión SSH.
Puede separar una sesión en un equipo, ir a casa e iniciar sesión en el equipo remoto. Cuando se vuelva a conectar, puede volver a conectar la sesión en segundo plano y volver a usarla de forma interactiva.
¿Cuál es el comando screen?
El comando screen
también es un multiplexor de terminal, y está repleto de opciones. Para obtener información detallada sobre todo lo que puede hacer con él, consulte nuestro artículo en profundidad.
Esta vez, vamos a concentrarnos en tmux
. A medida que avanzamos, mencionaremos cómo screen
maneja la misma característica o función.
Solo una cosa nos molestaba sobre screen
. Lo cubriremos cuando lleguemos a él, y veremos si tmux
funciona mejor.
RELACIONADO: Cómo usar el comando de pantalla de Linux
Instalar tmux
Mientras que screen
generalmente se instala de forma predeterminada en distribuciones Linux populares, tmux
no lo está. Para instalar tmux
en Ubuntu, escriba lo siguiente:
sudo apt-get install tmux
En Manjaro puede usar pacman
:
sudo pacman -Sy tmux
En Fedora 31 de tmux
ya está instalado.
Iniciar una sesión tmux
Para iniciar tmux
, simplemente escríbalo y presione Enter:
tmux
La ventana del terminal mostrará una barra de estado cuando esté en una sesión tmux
.
El lado derecho de la barra de estado muestra el nombre de host, la hora y la fecha. El lado izquierdo muestra la siguiente información relacionada con la sesión:
- : Este es el nombre de la sesión. Por defecto, están numeradas, empezando por cero. A continuación, explicamos cómo puede dar nombres significativos a las sesiones.
- 0: bash*: El 0 indica que esta es la primera ventana de esta sesión. El único proceso que se ejecuta en esta sesión es
bash
. Si ejecuta un programa, su nombre aparecerá aquí. El asterisco ( * ) significa que esta es la ventana que está mirando. Cada vez que crea una nueva ventana en una sesióntmux
, su número de ventana y el nombre del programa que se ejecuta en ella se agregan a la barra de estado.
El comando screen
no le proporciona una barra de estado. Tienes que volar a ciegas y confiar en tu ingenio para saber lo que está pasando, lo que requiere un poco de práctica.
En el lado positivo, no perderá una línea de bienes raíces de ventana de terminal. Por supuesto, normalmente expandiría la ventana de su terminal para que valga la pena usar un multiplexor de terminal. En ese caso, la pérdida de una línea para la barra de estado no es un gran problema. Hemos dejado las imágenes de las ventanas del terminal aquí en el tamaño predeterminado para que pueda ver la información.Los comandos
se dan a tmux
usando pulsaciones de teclas, y hay dos partes para esto. Primero, presiona Ctrl + B para obtener la atención de tmux
. A continuación, presione rápidamente la tecla siguiente para enviar un comando atmux
. Los comandos se dan pulsando letras, números, signos de puntuación o teclas de flecha.
Es lo mismo en screen
, excepto que presiona Ctrl+A para llamar su atención.
Para cerrar la ventana, pulse Ctrl + B y, a continuación, pulse rápidamente X. La barra de estado se vuelve ámbar. A continuación, se le pedirá que confirme que desea eliminar la ventana.
Pulse Y para cerrar la ventana o N si cambia de opinión. No tienes que pulsar Enter después; Y o N es suficiente para registrar tu elección.
Si pulsa Y, la ventana se cierra. Debido a que esta es la única ventana de esta sesión, la sesión se termina.
La sesión tmux
se cierra y se te devuelve a la línea de comandos desde la que iniciaste tmux
. Verás «» en la ventana de la terminal.
Esto puede parecer que está indicando lo obvio, pero es una confirmación de que ha cerrado la sesión y no la ha dejado separada y en funcionamiento. Discutiremos las sesiones de separación a continuación.
Iniciar una Sesión de tmux con nombre
Si inicia regularmente varias sesiones tmux
, apreciará rápidamente la funcionalidad de dar a cada una de ellas un nombre significativo. También puede nombrar sesiones en screen
, pero no se muestran en ninguna parte de las ventanas de la sesión.
Para iniciar tmux
con un nombre de sesión, utilice el comando new
(nueva sesión) y la opción -s
(nombre de sesión). Nuestra sesión va a ser llamado «friki-1,» así que nos escriba lo siguiente:
tmux new -s geek-1
el tmux
sesión de cargas, «friki-1» se muestra como la primera entrada en la barra de estado, en el extremo izquierdo.
Añadir más Ventanas
Para crear una nueva ventana en la sesión actual, pulse Ctrl + B y, a continuación, C. Aparecerá una ventana de terminal en blanco en la sesión actual. Así que tendremos algo ejecutándose en esta nueva ventana, comencemos el comando dmesg
con la opción -w
(seguir):
dmesg -w
Ahora tenemos dos ventanas en la sesión; una está ejecutando top
, y el otro dmesg
. Sin embargo, solo podemos ver uno a la vez (más sobre eso en un momento).
Eche un vistazo al lado izquierdo de la barra de estado. Todavía estamos en la sesión» geek-1″tmux
. En la ventana cero, top se está ejecutando, y en la ventana uno, dmesg
se está ejecutando. El asterisco ( * ) después de dmesg
nos indica qué ventana es visible.
Para saltar entre ventanas, presione Ctrl + B y, a continuación, una de las teclas siguientes:
- N: Muestre la siguiente ventana.
- P: Muestra la ventana anterior.
- 0 a 9: Muestra una ventana numerada del 0 al 9.
también puede elegir una ventana de una lista. Si pulsa Ctrl + B y, a continuación, W, aparecerá una lista de ventanas.
Para mover la barra de resaltado ámbar, presione las flechas Hacia Arriba o hacia Abajo, Inicio o Fin. La sección inferior de la pantalla muestra una vista previa del contenido en la ventana resaltada.
Presione Entrar para moverse a la ventana resaltada, o Esc para salir de la lista de ventanas sin cambiar.
Separar y adjuntar sesiones
Si pulsa Ctrl + B y, a continuación, D, separará la sesión. Seguirá ejecutándose en segundo plano, pero no podrás verlo ni interactuar con él.
Hemos iniciado top
en la sesión, por lo que tenemos un proceso en ejecución con el que demostrar. Luego, presionamos Ctrl + B, y luego D. La sesión desaparece y se convierte en una sesión de fondo.
Volvemos a la ventana de terminal original. Hay un mensaje de tmux
que nos dice que la sesión está separada. También nos recuerda el nombre que le dimos a la sesión. Esto es útil porque es lo que usamos para adjuntar a una sesión en segundo plano y luego restaurarla a una interactiva.
Para adjuntar una sesión separada, usaremos el comando autoexplicativo attach-session
con la opción -t
(sesión de destino). También proporcionaremos el nombre de la sesión que deseamos recordar.
Escribimos lo siguiente:
tmux attach-session -t geek-1
Nuestra sesión vuelve y se convierte en una sesión visible e interactiva de nuevo.
Cualquier proceso continuo o de larga duración que haya iniciado antes de separar la sesión seguirá ejecutándose en segundo plano (a menos que haya terminado) cuando adjunte la sesión.
screen
puede hacer esto, pero no tan intuitivamente.
el Manejo de Múltiples Sesiones
Vamos a abrir otra ventana de terminal, y empezar una nueva tmux
sesión llamada «friki-2»:
tmux new -s geek-2
En ese período de sesiones, vamos a inicio dmesg
:
dmesg -w
Ahora, tenemos nuestro original «friki-1» tmux
sesión, y uno nuevo llamado «friki-2.»
La barra de estado nos muestra que esta sesión se llama «geek-2», y tiene una ventana que ejecuta dmesg
.
Si presionamos Ctrl + B, y luego D, separamos esa sesión.
De vuelta en la sesión «geek-1» tmux
, presionamos Ctrl+B, y luego S para ver una lista de sesiones tmux
.
Para ser claros, esta es una lista de sesiones. La pantalla similar que vimos anteriormente era una lista de ventanas en una sola sesión.
Puede mover la barra de resaltado ámbar presionando las Flechas Hacia Arriba y hacia Abajo, Inicio y Fin. La sección inferior muestra una vista previa del contenido de la sesión resaltada.
Si pulsa la flecha derecha, se mostrarán las ventanas de la sesión resaltada.
Pulse Intro para pasar a la sesión o ventana resaltada o Esc para salir de la lista de sesiones sin cambiar de sesión. Si selecciona una sesión nueva, la actual se separará y se adjuntará la que haya seleccionado.
Separamos la sesión «geek-2» antes de hacer esto. Sin embargo, puede hacer esto con sesiones que todavía están conectadas a sus ventanas de terminal originales. Cuando lo haga, cualquier cambio de pantalla aparecerá simultáneamente en ambas sesiones tmux
.
El comando screen
también puede hacer esto a través de un conjunto similar de comandos.
Trabajar con paneles de ventana
Si pulsa Ctrl+B y, a continuación, comillas dobles ( «» ), dividirá la ventana horizontalmente en dos paneles.
Esto solo afecta a la ventana actual; las demás de la sesión no se cambiarán. Hemos utilizado el comando tmux ls
en el panel superior para listar las ventanas de esta sesión. Hay dos, y la línea de estado nos dice que estamos en la ventana uno. Si saltamos a la ventana cero presionando Ctrl + B, y luego 0 (cero), vemos que está tal como lo dejamos.
Estas son dos líneas de comando independientes, no dos vistas en una ventana; son shells distintos y separados. Podemos mostrar esto ejecutando un comando diferente en cada panel.
Nos escriba lo siguiente:
uname -a
ls -hl
Para pasar de un panel a otro, presione Ctrl+B y, a continuación, ya sea Arriba, Abajo, Izquierda o Flecha Derecha.
Si presiona Ctrl + B, y luego el signo de porcentaje (%)
divide el panel actual verticalmente.
Presione Ctrl + B, y luego Q para hacer que tmux
parpadee brevemente el número de cada panel.
Estos números se utilizan en avisos y mensajes de tmux
. Presione Ctrl + B y luego X para cerrar el panel actual. La barra de estado cambia a ámbar y se le solicita que confirme que desea cerrar ese número de panel. Presione Y para quitar el panel, o N para dejar las cosas como están.
Si pulsa Y, el panel se elimina.
El comando screen
también tiene paneles, pero, de nuevo, son menos intuitivos de usar. Lo que nos molesta de screen
es que si separas una sesión con paneles, desaparecen cuando vuelves a conectar esa sesión. Esto envejece muy rápido.
Una hoja de trucos Ctrl+B
Hemos incluido una hoja de trucos con los diferentes comandos que puede usar en tmux
a continuación.
Comandos de sesión
- S: Lista de sesiones.
- $: Cambiar el nombre de la sesión actual.
- D: Separar la sesión actual.
- Ctrl+B, y luego ?: Mostrar la página de ayuda en
tmux
.
Comandos de ventana
- C: Cree una nueva ventana.
- ,: Cambie el nombre de la ventana actual.
- W: Lista las ventanas.
- N: pasar a la siguiente ventana.
- P: Mover a la ventana anterior.
- 0 a 9: Vaya al número de ventana especificado.
Comandos de panel
- %: Cree una división horizontal.
- «: Crea una división vertical.
- H o Flecha izquierda: Desplácese al panel de la izquierda.
- I o Flecha Derecha: Muévete al panel de la derecha.
- J o Flecha hacia abajo: Vaya al panel de abajo.
- K o Flecha hacia arriba: Vaya al panel de arriba.
- P: Muestra brevemente los números del panel.
- O: Muévete por los paneles en orden. Cada pulsación te lleva a la siguiente, hasta que recorres todas ellas.
- }: Cambia la posición del panel actual por la siguiente.
- {: Cambia la posición del panel actual por la anterior.
- X: Cierre el panel actual.
Cómo Se Comparan
En términos de funcionalidad, screen
y tmux
ambos funcionan de manera similar y ofrecen las mismas características principales. Es la forma de acceder a esas funciones la que es marcadamente diferente. tmux
ofrece formas más sencillas y cómodas de acceder a las diversas funciones. Sin embargo, esa no es la única diferencia.
La capacidad de renombrar sesiones y ventanas en tmux
es impecable, y el hecho de que conserve los paneles cuando vuelva a conectar una sesión cambia el juego.
screen
, por otro lado, pierde completamente los paneles al separar y volver a conectar una sesión. Esto es lo suficientemente molesto como para evitar separarse en primer lugar.
Hay mucho más en tmux
, incluidas sus capacidades de scripting increíblemente flexibles. Te debes a ti mismo comprobarlo.
Dave McKay usó computadoras por primera vez cuando la cinta de papel perforado estaba de moda, y ha estado programando desde entonces. Después de más de 30 años en la industria de TI, ahora es periodista tecnológico a tiempo completo. Durante su carrera, ha trabajado como programador independiente, gerente de un equipo internacional de desarrollo de software, gerente de proyectos de servicios de TI y, más recientemente, como Oficial de Protección de Datos. Dave es un evangelista de Linux y defensor del código abierto.Leer la Biografía Completa «