Cómo usar tmux en Linux (y por qué es mejor que Screen)

Publicado: 2022-01-29
Una terminal Linux estilizada en una computadora portátil con sesiones de shell en segundo plano.
fatmawati achmad zaenuri/Shutterstock.com

El comando Linux tmux es un multiplexor de terminal, como screen . Sus defensores son muchos y vocales, por lo que decidimos comparar los dos. ¿Es tmux realmente mejor, o es solo un caso de preferir lo que sabes?

tmux vs pantalla

Tanto los comandos screen tmux como GNU son multiplexores de terminal. Le permiten tener múltiples 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 brinda una línea de comando independiente.

10 comandos básicos de Linux para principiantes
RELACIONADO 10 comandos básicos de Linux para principiantes

También puede desconectar 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 adjuntar la sesión que aún se está ejecutando. También puede hacerlo a través de una conexión SSH.

Puede desconectar una sesión en una computadora, ir a casa e iniciar sesión en la computadora remota. Cuando vuelva a conectarse, puede volver a adjuntar la sesión en segundo plano y usarla de forma interactiva nuevamente.

¿Qué es el comando de pantalla?

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 detallado.

Anuncio publicitario

Esta vez, nos vamos a concentrar en tmux . A medida que avancemos, mencionaremos cómo la screen maneja la misma característica o función.

Solo una cosa nos molestó sobre screen . Cubriremos eso cuando lleguemos a eso, y veremos si a tmux le va mejor.

RELACIONADO: Cómo usar el comando de pantalla de Linux

Instalando tmux

Si bien screen generalmente se instala de forma predeterminada en las distribuciones populares de Linux, tmux no lo está. Para instalar tmux en Ubuntu, escriba lo siguiente:

 sudo apt-get install tmux 

En Manjaro puedes usar pacman :

 sudo pacman -Sy tmux 

En Fedora 31, tmux ya está instalado.

Inicio de una sesión tmux

Para iniciar tmux , simplemente escríbalo y presione Enter:

 tmux 

La ventana de la terminal mostrará una barra de estado cuando esté en una sesión de 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:

  • [0]: Este es el nombre de la sesión. De forma predeterminada, están numerados, comenzando con cero. Cubrimos cómo puede dar nombres significativos a las sesiones a continuación.
  • 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á viendo. Cada vez que crea una nueva ventana en una sesión tmux , 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 brinda una barra de estado de manera predeterminada. Tienes que volar a ciegas y confiar en tu ingenio para saber qué está pasando, lo que requiere un poco de práctica. (A menos que configure su propia barra de estado).

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 de la terminal aquí en el tamaño predeterminado para que pueda ver la información.

Anuncio publicitario

Los comandos se dan a tmux mediante pulsaciones de teclas, y esto consta de dos partes. Primero, presiona Ctrl+B para llamar la atención de tmux . Luego presiona rápidamente la siguiente tecla para enviar un comando a tmux . Los comandos se dan presionando letras, números, signos de puntuación o teclas de flecha.

Es lo mismo en la screen , excepto que presiona Ctrl+A para llamar su atención.

Para cerrar la ventana, presione Ctrl+B y luego presione rápidamente X. La barra de estado se vuelve ámbar. A continuación, se le pedirá que confirme que desea eliminar la ventana.

Presione Y para cerrar la ventana o N si cambia de opinión. No es necesario que presione Entrar después; S o N es suficiente para registrar su elección.

Si presiona Y, la ventana se cierra. Debido a que esta es la única ventana en esta sesión, la sesión finaliza.

La sesión de tmux se cierra y vuelve a la línea de comandos desde la que inició tmux . Verá "[salido]" en la ventana de la terminal.

Anuncio publicitario

Esto puede parecer que indica lo obvio, pero es una confirmación de que ha cerrado la sesión y no la ha dejado desconectada y ejecutándose. Discutiremos las sesiones de separación a continuación.

Inicio de una sesión de tmux con nombre

Si inicia regularmente varias sesiones de 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, use el comando new (nueva sesión) y la opción -s (nombre de sesión). Nuestra sesión se llamará "geek-1", así que escribimos lo siguiente:

 tmux nuevo -s geek-1 

Cuando se carga la sesión de tmux , se muestra "geek-1" como la primera entrada en la barra de estado, en el extremo izquierdo.

Una sesión tmux con el nombre "geek-1" en el lado izquierdo de la barra de estado.

Agregar más ventanas

Para crear una nueva ventana en la sesión actual, presione Ctrl+B y luego C. Obtendrá una ventana de terminal en blanco en la sesión actual. Así que tendremos algo ejecutándose en esta nueva ventana, iniciemos el comando dmesg con la opción -w (seguir):

 dmesg-w 

Ahora tenemos dos ventanas en la sesión; uno está ejecutando top y el otro dmesg . Sin embargo, solo podemos ver uno a la vez (más sobre eso en un momento).

Anuncio publicitario

Eche un vistazo al lado izquierdo de la barra de estado. Todavía estamos en la sesión tmux "geek-1". En la ventana cero, se ejecuta top, y en la ventana uno, se ejecuta dmesg . El asterisco (*) después de dmesg nos dice qué ventana está visible.

Para saltar entre ventanas, presione Ctrl+B y luego una de las siguientes teclas:

  • N : Muestra la siguiente ventana.
  • P: Mostrar la ventana anterior.
  • 0 a 9: muestra una ventana numerada del 0 al 9.

También puede elegir una ventana de una lista. Si presiona Ctrl+B y luego W, aparece una lista de ventanas.

Para mover la barra resaltada en á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 pasar a la ventana resaltada o Esc para salir de la lista de ventanas sin cambiar.

Separar y adjuntar sesiones

Si presiona Ctrl+B y luego D, desconectará la sesión. Continuará ejecutándose en segundo plano, pero no podrá verlo ni interactuar con él.

Anuncio publicitario

Hemos comenzado top en la sesión, por lo que tenemos un proceso en ejecución para demostrar. Luego, presionamos Ctrl+B, y luego D. La sesión desaparece y se convierte en una sesión en segundo plano.

Volvemos a la ventana de terminal original. Hay un mensaje de tmux que nos dice que la sesión está desconectada. 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 sesión interactiva.

Para adjuntar una sesión separada, usaremos el comando attach-session se explica por sí mismo con la opción -t (sesión de destino). También proporcionaremos el nombre de la sesión que deseamos recuperar.

Tecleamos lo siguiente:

 tmux adjuntar-sesión -t geek-1 

Nuestra sesión regresa y vuelve a ser una sesión visible e interactiva.

Cualquier proceso continuo o de ejecución prolongada que haya iniciado antes de desconectar la sesión seguirá ejecutándose en segundo plano (a menos que hayan terminado) cuando adjunte la sesión.

screen puede hacer esto, pero no tan intuitivamente.

Manejo de múltiples sesiones

Abramos otra ventana de terminal y comencemos una nueva sesión de tmux llamada "geek-2":

 tmux nuevo -s geek-2 

En esa sesión, dmesg :

 dmesg-w 

Anuncio publicitario

Ahora, tenemos nuestra sesión tmux "geek-1" original y una nueva llamada "geek-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.

Sesión separada de tmux geek-2 en una ventana de terminal.

De vuelta en la sesión tmux "geek-1", 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.

Anuncio publicitario

Si presiona la flecha derecha, se muestran las ventanas de la sesión resaltada.

Presione Entrar 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 nueva sesión, la sesión actual se separa y la que seleccionó se adjunta.

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 de tmux .

El comando screen también puede hacer esto a través de un conjunto similar de comandos.

Trabajar con paneles de ventana

Si presiona Ctrl+B y luego comillas dobles (""), divide la ventana horizontalmente en dos paneles.

Esto solo afecta a la ventana actual; los demás en la sesión no se cambiarán. Hemos usado el tmux ls en el panel superior para enumerar las ventanas en 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 la dejamos.

Anuncio publicitario

Estas son dos líneas de comando independientes, no dos vistas en una ventana; son conchas distintas y separadas. Podemos mostrar esto ejecutando un comando diferente en cada panel.

Tecleamos lo siguiente:

uname -a

ls -hl

Para pasar de un panel a otro, presione Ctrl+B y luego las flechas hacia arriba, hacia abajo, hacia la izquierda o hacia la derecha.

Dos comandos diferentes en dos paneles en una sesión tmux en una ventana de terminal.

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 presiona Y, se elimina el panel.

Anuncio publicitario

El comando screen también tiene paneles, pero, nuevamente, son menos intuitivos de usar. Lo que nos molesta de la screen es que si desconecta una sesión con paneles, desaparecen cuando vuelve a conectar esa sesión. Esto envejece muy rápido.

Una hoja de trucos Ctrl+B

Hemos incluido una hoja de trucos de 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: desconectar la sesión actual.
  • Ctrl+B, y luego ?: muestra la página de ayuda en tmux .

Comandos de ventana

  • C: Crear una nueva ventana.
  • ,: Cambiar el nombre de la ventana actual.
  • W: Enumere las ventanas.
  • N: Mover a la siguiente ventana.
  • P: Ir a la ventana anterior.
  • 0 a 9: Mover al número de ventana especificado.

Comandos de panel

  • %: crea una división horizontal.
  • “: Crea una división vertical.
  • H o flecha izquierda: muévase al panel de la izquierda.
  • I o Flecha derecha: muévase al panel de la derecha.
  • J o Flecha hacia abajo: muévase al panel de abajo.
  • K o flecha arriba: muévase al panel de arriba.
  • P : Mostrar brevemente los números de los paneles.
  • O: Muévete por los paneles en orden. Cada pulsación le lleva a la siguiente, hasta que las recorre todas.
  • }: cambia la posición del panel actual con el siguiente.
  • {: Cambia la posición del panel actual con el anterior.
  • X: Cierra el panel actual.

Cómo se comparan

En términos de funcionalidad, screen y tmux funcionan de manera similar y ofrecen las mismas características principales. Es la forma en que accede a esas funciones que es marcadamente diferente. tmux ofrece formas más cómodas e ingeniosas de acceder a las diversas funciones. Sin embargo, esa no es la única diferencia.

La capacidad de cambiar el nombre de sesiones y ventanas en tmux es ordenada, y el hecho de que retiene los paneles cuando vuelves a adjuntar una sesión cambia las reglas del juego.

screen , por otro lado, pierde completamente los paneles cuando desconecta y vuelve a conectar una sesión. Esto es casi lo suficientemente molesto como para que evites separarte en primer lugar.

Hay mucho más en tmux , incluidas sus capacidades de secuencias de comandos increíblemente flexibles. Te lo debes a ti mismo para comprobarlo.

RELACIONADO: Las mejores computadoras portátiles Linux para desarrolladores y entusiastas