Pregunta tmux vs. pantalla


Estoy a punto de volver a usar Pantalla GNU, pero he estado escuchando a personas mencionar ocasionalmente tmux como una mejor alternativa. ¿Realmente ofrece una alternativa a todas las características? Pantalla ofertas, como la supervisión de la actividad en diferentes ventanas, etc.? ¿Cuáles son los pros y los contras de cada uno?


212


origen


También discutido en unix.stackexchange.com/questions/549/tmux-vs-gnu-screen - Lloyd Dewolf
En la pantalla puede enviar comandos a una sesión adjunta a través de screen -S automate_me -X stuff 'command'$(echo -ne '\015') no puedes en tmux Muy útil si está probando una imagen / imagen de la caja virtual y necesita hacer algunos comandos de forma remota rápidamente. Por ejemplo, lo tengo en un comando Vim para depurar rápidamente scripts en una pantalla de Virtualbox. En versiones anteriores de tmux encontré que la pantalla manejaba más texto pasando rápidamente, mientras que tmux se bloqueaba. Además, la pantalla no requiere ninguna configuración para manejar UTF-8, etc. tmux lo hace. - dezza


Respuestas:


Algunas de las (principales) razones que prefiero tmux encima screen:

  • La barra de estado es mucho más fácil de usar. Puede configurar fácilmente diferentes textos / estilos para la ventana actual, ventanas con actividad, etc. y puede colocar elementos a la izquierda y derecha de la barra de estado, incluidos comandos de shell que se pueden ejecutar en un intervalo específico (15 segundos predeterminados).
  • Casi cualquier comando que puedas ejecutar dentro tmux se puede ejecutar desde un shell con tmux command [args]. Esto hace que sea muy fácil de secuencia de comandos, así como también facilita la realización de comandos complejos.
  • Cambio de nombre de ventana automático mucho más preciso. Mientras screen establece el título basado en la primera palabra del comando, y requiere que la configuración del shell haga incluso eso en una ventana de shell, tmux realiza un seguimiento de qué procesos se están ejecutando realmente en cada ventana y actualiza el título en consecuencia. De esta forma, obtiene el cambio de nombre dinámico con cualquier configuración de shell y cero. Por ejemplo: supongamos que está ejecutando Z Shell; el nombre de la ventana sería "zsh". Ahora digamos que quieres editar algún archivo de configuración, entonces escribes sudo emacs /etc/somefile. Mientras sudo te pide tu contraseña, el nombre de la ventana será "sudo", pero una vez que hayas hecho eso y sudo lanza emacs, el título será "emacs". Cuando hayas terminado y salgas emacs, el título cambiará a "zsh". Esto es muy útil para realizar un seguimiento de las ventanas, y también puede ser especialmente útil en situaciones específicas, como si tuviera algún proceso de larga ejecución en otra ventana que ocasionalmente le solicite información usando dialog; el nombre de la ventana cambiaría a "diálogo" cuando eso sucediera, para que supiera que tenía que cambiar a esa ventana y hacer algo.
  • Nicer sesión manejo (en mi humilde opinión). Puedes hacer mucho más con sesiones dentro tmux sí mismo. Puede cambiar fácilmente, cambiar el nombre, etc. y puede mover y compartir ventanas entre sesiones. También tiene un modelo diferente, donde cada usuario tiene un servidor que controla sus sesiones y con el que el cliente se conecta. La desventaja de esto es que si el servidor falla, pierdes todo; Aunque nunca he tenido el servidor bloqueado en mí.
  • tmux parece estar más activamente desarrollado. Hay actualizaciones con bastante frecuencia, y usted puede archivar un informe de error o una solicitud de función de acuerdo con estas preguntas frecuentes y obtenga una respuesta dentro de unos días.

Esas son solo las principales cosas que vienen inmediatamente a la mente. También hay otras cosas pequeñas, y estoy seguro de que estoy olvidando algunas cosas. Definitivamente vale la pena dar tmux un intento, sin embargo.


140



El desarrollo de tmux es más activo porque es nuevo. La pantalla GNU está casi 25 años, así que arreglaron la mayoría de los errores. - a paid nerd
el comentario de un nerd pagado es una calificación muy importante de su último punto. Y el segundo punto como se indica no es realmente una diferencia, ya que también se aplica a la pantalla a menos que pueda ser más específico. - jw013
@a nerd pagado: techrepublic.com/blog/opensource/is-tmux-the-gnu-screen-killer/... - sjas
@apaidnerd es una afirmación muy rica: savannah.gnu.org/bugs/... - Błażej Michalik


(Sesiones son colecciones de ventanas que se puede separar y volver a unir más tarde. Windows puede contener uno o más paneles. Por ejemplo, configs, check out aquí y aquí.)

tmux

  • Pros
    • Puede enviar claves a otros paneles, algo así como un IDE
    • Fácil combinación de teclas: con la configuración correcta, se sentirá como en casa desde Vim o Screen
    • Enlaces Vim-ish y Emacs-ish incorporados
    • Buena administración de diseño, muy similar a un administrador de ventanas de mosaico
    • Unicode parece funcionar con terminales modernos
    • Algunos problemas terminales solucionados TERM=tmux
  • Contras
    • Lento: no sé por qué, pero las pulsaciones de teclas parecen lacias No más problemas con la lentitud
    • La multiplexión fuerza el ancho y la altura de toda la sesión a la terminal conectada más pequeña
    • Se ha bloqueado varias veces en Mac OS X, perdiendo toda la sesión
    • Ha fallado en Linux después de la actualización, donde no pude volver a conectarme a mi sesión anterior
    • Omite comandos de teclado ocasionalmente - ^ A ^ [ toma algunos intentos para el modo de copia
    • No se puede mover un panel de una ventana a otra Reparado con el join-pane mando
    • Sin desenrollado de la línea (o "reflujo" o "reenvío") después del cambio del ancho del terminal (cambio de tamaño de la ventana)

Pantalla GNU

  • Pros
    • Extremadamente estable (v1.0 fue en 1987)
    • Algunos problemas terminales solucionados TERM=screen
    • Emacs-ish enlaces integrados
    • Fácil de mover y controlar los paneles horizontales
    • Al multiplexar, cualquier terminal conectado puede cambiar el tamaño de un panel
  • Contras
    • Sin divisiones verticales sin parche (excepto en Ubuntu)
    • Las divisiones de paneles se pierden al separar
    • Hacer que Unicode funcione requiere un poco de delicadeza y determinación
    • Configuración de línea de estado loco

84



¿Las pulsaciones de teclas son demasiado laxas solo cuando se presiona Esc? tmux tiene un retraso en el que espera para ver si estás ingresando una secuencia xterm o solo una Esc, y combinada con vim, puede parecer bastante lenta. Establezca el tiempo de escape en un valor menor como 50. - Eevee
También es divertido que digas ^A ^[ no funciona a veces; Tengo el mismo problema con la pantalla, ¡pero nunca con tmux! Y creo que puedes mover paneles con join-pane. - Eevee
Encuentro que la pantalla usa mucha más memoria, lo que podría incluirse como una desventaja. - paradroid
Bien, tmux apesta con vimEn algunos casos (el mío es), ninguna solución publicada en algún lugar funciona, e incluso las personas que pasan algún tiempo resolviendo el problema mío no pudieron hacerlo. Es molesto cuando no puedes usar <C-Left> y <C-Right> en vim. - yo'
No vertical splits without patch (except on Ubuntu) No creo que eso sea cierto. He estado usando la pantalla durante algunos años y nunca tuve problemas para dividir horizontal o verticalmente en Debian y Fedora. Incluso en Android con Termux funciona como un encanto. - Forivin


Un pro para pantalla: está disponible prácticamente todo en Linux y Solaris. Cuando tiene que pasar de una plataforma a otra, es bueno no tener el cambio de contexto mental.

Estoy seguro de que puedes compilar tmux en cualquier plataforma, pero a veces tienes acceso suficiente para hacer uso de la pantalla, pero los administradores del sistema no quieren agregar ningún software que no sea absolutamente necesario.


9





Las cosas que obtengo de tmux que no consigo fácilmente en la pantalla son:

  1. hacer divisiones de paneles verticales
  2. multiplexación, que usamos para el emparejamiento remoto y local.

8



No soporte de pantalla de multiplexación con el -x opción y acladd? - poolie
Como menciona el post anterior, la pantalla tiene divisiones verticales de paneles (requiere un parche sin Ubuntu, aparentemente). Además, la multiplexación funciona bien y tiene muchos años. - EntangledLoops
divisiones verticales han estado en la línea principal screen desde 4.2, lanzado en 2014. Muchas distribuciones de barcos muy versiones antiguas, especialmente Apple. - Neal Fultz
Ambos puntos son incorrectos - Forivin


He estado usando tmux durante aproximadamente 2 días, por lo que mi entusiasmo desenfrenado aún no se ha atenuado al abordar casos de uso molestos. Mientras atravesaba los habituales dolores de crecimiento de la transición de un programa a otro, me sorprendieron varias características positivas, pero la característica que me hace creer que nunca volveré a la pantalla es la utilidad del modo copiar y pegar. En la pantalla, no puede ingresar al modo de copia, retroceder en el búfer y luego ir a otra ventana. En tmux, puede tener varias ventanas simultáneamente en modo copia con el búfer desplazado hacia atrás a diferentes posiciones. Además, hay varios almacenamientos intermedios de copia. Y no necesita parchear la fuente para obtener el movimiento del cursor fFtT.


7





He reemplazado Pantalla GNU con tmux en cada caso de uso, excepto uno, cuando necesito un Hiper terminal equivalente a conectarse a puertos seriales. Como señaló Aaron Toponce en su artículo "Conexión a módems nulos en serie con pantalla GNU", el Preguntas frecuentes sobre tmux estados:

la pantalla tiene soporte serial y telnet integrado; esto es hinchazón y es poco probable     para ser agregado a tmux.

Mi típico tmux use-case es crear sesiones de desarrollo multi-panel y multi-ventana en combinación con tmuxinator. Si quieres aprender tmux, Recomiendo obtener el libro de Brian P. Hogan, tmux: Desarrollo Productivo sin Ratones.


4





Yo diría que la disponibilidad de la pantalla es su fortaleza, pero su sistema de ventanas no es tan fácil de manejar como Es Debo decir que uso  la mayor parte del tiempo en la actualidad y como resultado tienen muchas pestañas de terminal en lugar de ventanas de Pantalla.

@Jed Schneider: Puedes obtener divisiones de paneles verticales con Ctrl+UN y entonces | (barra vertical).


1





Uno de los mantenedores de tmux, Thomas Adam, también es listado como un mantenedor para el screen proyecto aunque solo toca el código tmux, que es un gran pro de tmux sobre la pantalla.


0





¿Alguien ha considerado que es menos probable que pierda la pantalla de ejecución de sesión, dependiendo de cómo la use?

He estado aprendiendo tmux en los últimos días y me ha gustado mucho, especialmente la increíble personalización que se puede hacer en ~ / .tmux.conf.

Pero se me ocurrió, con la pantalla, al menos en la forma en que la uso más, las sesiones en vivo en la máquina remota en la que estoy ejecutando la pantalla. Por lo general, para ejecutar un comando de larga ejecución del que luego puedo desprenderme y volver más tarde. Raramente ejecuto la pantalla localmente desde mi estación de trabajo para conectarme a otros hosts.

Con tmux, al menos en la forma en que lo uso más, este y sus sesiones conectadas se ejecutan localmente en mi estación de trabajo.

Si mi estación de trabajo pierde su conexión, ¿imagino que tmux desconecta las conexiones a todos los servidores a los que me he conectado?

¿Supongo que podría ser un profesional para screen over tmux, dependiendo de cómo lo use?


-3



¿Eso fue una pregunta o una respuesta? El propósito de ambos - screen y tmux es no usar el descriptor del archivo de terminales (stdin, stdout, stderr) asignado a una conexión particular por el sistema operativo, es por eso que ambos pueden sobrevivir a la interrupción de la red y continuar ejecutándose. Si configura conexiones externas desde tmux / screen a recursos remotos y esas conexiones se rompen, no está relacionado en absoluto con tmux / screen ya que ninguno de ellos puede controlar tales cosas. Te sugiero que edites tu respuesta si no quieres que te marquen, ya que la respuesta se supone que responde una pregunta - Alex