it-swarm-es.tech

tmux vs. GNU Pantalla

Navegando a través de preguntas Encontré tmux (normalmente usaba GNU). Mi pregunta es cuáles son los pros y los contras de cada uno de ellos. Especialmente no pude encontrar mucho sobre tmux.

196
Maciej Piechotka

De su sitio web :

  • ¿En qué se diferencia tmux de la pantalla GNU? ¿Qué más ofrece?

tmux ofrece varias ventajas sobre la pantalla:

  • un modelo cliente-servidor claramente definido: las ventanas son entidades independientes que pueden conectarse simultáneamente a múltiples sesiones y verse desde múltiples clientes (terminales), así como moverse libremente entre sesiones dentro del mismo servidor tmux;
  • una interfaz de comandos coherente y bien documentada, con la misma sintaxis, ya sea que se use de forma interactiva, como enlace de teclas o desde el Shell;
  • fácilmente programable desde el Shell;
  • múltiples tampones de pasta;
  • elección de diseños de teclas vi o emacs;
  • una opción para limitar el tamaño de la ventana;
  • una sintaxis de línea de estado más utilizable, con la capacidad de mostrar la primera línea de salida de un comando específico;
  • un código base más limpio, moderno, fácilmente extendido y con licencia BSD.

Todavía hay algunas características que la pantalla incluye que tmux omite:

  • soporte incorporado de serie y telnet; esto es hinchado y es poco probable que se agregue a tmux;
  • soporte de plataforma más amplio, por ejemplo IRIX y HP-UX, y para terminales impares.
124
nisc

Una diferencia está en cómo actúan los dos cuando se conectan múltiples terminales a una sola sesión.

Con pantalla, la vista de cada terminal conectado es independiente de las demás. Con tmux, todos los terminales conectados ven lo mismo.

Digamos que tiene dos terminales conectadas a una sola sesión tmux. Si escribes ^B 1 en un terminal, el otro terminal también cambia a la ventana 1.

Cuando tiene dos terminales conectadas a una sola sesión de pantalla y escribe ^A 1 en uno, no tiene efecto en el otro terminal.

Esto se basa en mi experiencia con tmux 1.2; Veo que 1.3 está fuera, pero no noté nada en el registro de cambios sobre este cambio de comportamiento.

Si te gusta el comportamiento de la pantalla y lo quieres en tmux:

Si su sesión original de tmux se llama 0 (predeterminado), entonces puedes hacer tmux new-session -t 0) para iniciar una nueva sesión independiente conectada al mismo conjunto de ventanas, que luego puede tener su propia vista.

45
drench

tmux es bastante nuevo en comparación con la pantalla GNU. Ventajas/desventajas es una pregunta difícil, ya que ambos programas resuelven aproximadamente el mismo problema. tmux tiene licencia BSD mientras que la pantalla es GNU GPL. Esto es importante para algunas personas.

la pantalla está más representada (en Linux) en este momento, es decir, es más probable que la encuentre en un cuadro de Linux dado que tmux. Sin embargo, tmux está más representado en OpenBSD ya que se incluye como parte de la instalación base.

Ambos programas le permiten hacer casi lo mismo, aunque el estado de las cosas es un poco más complejo que eso. Cambiar entre los dos no es demasiado complicado, ya que gran parte de la funcionalidad de las pantallas también se ha introducido en tmux, aunque si eres un usuario avanzado de cualquiera de los dos, es probable que encuentres algunas frustraciones al cambiar al otro.

Al igual que con cualquier programa, realmente depende de sus necesidades y con las que se sienta más cómodo. Pruébelos a ambos y vea con qué juega bien.

Para obtener más información sobre tmux, consulte https://tmux.github.io/

25
gabe.

Pensé que solo mencionaría el envoltorio byobu que está disponible para la pantalla que lo hace mucho mejor desde el primer momento. No sé si algo así está disponible para tmux, pero byobu hizo que mi .screenrc solo tuviera un puñado de líneas. Mira esto artículo rápido sobre byobu y capturas de pantalla. La página del proyecto para byob describe el nombre que se origina de un término japonés para pantallas decorativas de paneles múltiples que sirven como divisores de habitaciones plegables. Además, solo ejecutarlo no daña la configuración de la pantalla, por lo que puede probarlo de manera segura. Una vez que comience la sesión con byobu, puede volver a conectarse libremente usando screen y aún así no perder ninguna personalización realizada por byobu (así que úsela solo para la invocación inicial). Las dos principales ventajas son:

  • Inicia la pantalla con un par de barras de estado con información útil
  • Proporciona muchas combinaciones de teclas para acceder más fácilmente a la funcionalidad de la pantalla.

No estoy usando la parte de combinación de teclas, pero definitivamente encuentro útiles las barras de estado.

También es posible que encuentre Screen Vs tmux link útil. Creo que la mayor parte ya se menciona en las respuestas existentes.

18
haridsv

La mayor diferencia en mi uso ha sido que en Gnu Screen solo puedes dividir fotogramas horizontalmente, mientras que en Tmux puedes dividir tanto horizontal como verticalmente. Esto es una especie de objetivo en movimiento, aunque como digo aquí la división vertical está llegando a la pantalla .

Aparte de eso, las cosas son sobre plano.

17
Eli Frey

Una gran desventaja de screen es que no se desarrolla activamente. Las páginas de error tienen cerca de 200 elementos sin asignar que se remontan a más de 5 años.

tmux también tiene algunos problemas abiertos, pero mucho menos, y tiene un soporte más activo.

12
Harold

Drench plantea un punto interesante: el comportamiento predeterminado de conectarse dos veces a la misma sesión es diferente en tmux. Sin embargo, si desea adjuntar dos veces y tener una vista independiente de las ventanas en esa sesión, inicie tmux con

tmux new-session -t <session name>

Eso creará una nueva sesión para usted y adjuntará las ventanas de la sesión ya existente. Si no nombró su primera sesión, puede agregar una con 'rename-session'.

12
Rikard Anglerud

tmux es más nuevo y varias características más.

He descubierto que un buen uso depende de una buena configuración.

Uso vi (vim) para editar (Ruby on Rails) y hay algunas cosas de configuración para que funcione bien.

Aquí está mi archivo ~/.tmux.conf con mucha configuración útil:

bind r source-file ~/.tmux.conf \; display "Reloaded!"  # Reload with ctrl-r
set -g prefix C-a         # prefix from ctrl-b to ctrl-a
unbind C-b                # allow ctrl-b for other things
set -sg escape-time 1     # quicker responses
bind C-a send-prefix      # Pass on ctrl-a for other apps
set -g base-index 1        # Numbering of windows
setw -g pane-base-index 1  # Numbering of Panes
bind \ split-window -h    # Split panes horizontal
bind - split-window -v    # Split panes vertically
bind h select-pane -L     # Switch to Pane Left
bind j select-pane -D     # Switch to Pane Down
bind k select-pane -U     # Switch to Pane Up
bind l select-pane -R     # Switch to Pane Right
bind -r C-h select-window -t :-  # Quick Pane Selection
bind -r C-l select-window -t :+  # Quick Pane Selection
bind -r H resize-pane -L 5       # Switch to Pane Left
bind -r J resize-pane -D 5       # Switch to Pane Down
bind -r K resize-pane -U 5       # Switch to Pane Up
bind -r L resize-pane -R 5       # Switch to Pane Right
setw -g mode-mouse off           # Mouse Off
set -g mouse-select-pane off     # Mouse Off  
set -g mouse-resize-pane off     # Mouse Off
set -g mouse-select-window off   # Mouse Off
setw -g monitor-activity on      # Activity Alerts
set -g visual-activity on
set -g status-fg white           # Status line Colors
set -g status-bg black
setw -g window-status-fg cyan    # Window list color
setw -g window-status-bg default
setw -g window-status-attr dim
setw -g window-status-current-fg white     # Active Window Color
setw -g window-status-current-bg red
setw -g window-status-current-attr bright
set -g pane-border-fg green      # Pane colors
set -g pane-border-bg black 
set -g pane-active-border-fg white 
set -g pane-active-border-bg yellow
set -g message-fg white          # Command/Message Line.
set -g message-bg black
set -g message-attr bright
set -g status-left-length 40     # Status Line, left side
set -g status-left "#[fg=white]Session: #S #[fg=yellow]#I #[fg=cyan]#P"
set -g status-utf8 on            # Status Line, right side
set -g status-right "-------"
set -g status-interval 60        # frequency of status line updates
set -g status-justify centre     # center window list
setw -g mode-keys vi             # vi keys to move 
unbind v                         # Open panes in same directory as tmux-panes script
unbind n
bind v send-keys " ~/tmux-panes -h" C-m
bind n send-keys " ~/tmux-panes -v" C-m
unbind Up                        # Maximizing and Minimizing...
bind Up new-window -d -n tmp \; swap-pane -s tmp.1 \; select-window -t tmp
unbind Down
bind Down last-window \; swap-pane -s tmp.1 \; kill-window -t tmp
bind P pipe-pane -o "cat >>~/#W.log" \; display "Toggled logging to ~/#W.log"
8
Michael Durrant

Me tomaré la libertad de agregar una diferencia:

tmux se basa en ncurses mientras que la pantalla no dibuja elementos adicionales. Si alguien usa el emulador de terminal que admite desplazamiento (s), se desplazará con la pantalla pero no con tmux (al menos en la configuración predeterminada). Lo mismo se aplica a la búsqueda y características similares.

8
Maciej Piechotka

Tuve problemas para que la pantalla admitiera utf-8 y 256 colores, pero tmux funcionó de fábrica.

6
zvolkov