tmux vs. GNU Screen [chiuso]


194

Scorrendo le domande che ho trovato su tmux (normalmente utilizzavo GNU Screen). La mia domanda è: quali sono i pro e i contro di ciascuno di essi. Soprattutto non ho trovato molto su tmux.



5
Come si può vedere dalle buone risposte qui sotto, sono senza opinione-based.
reinierpost,

@reinierpost - sembra che molte persone qui siano troppo veloci per chiudere le domande come "principalmente basate sull'opinione". Tuttavia, possiamo votare per riaprire.
MountainX

Sebbene questa domanda sia una domanda comparativa, penso che gli argomenti pro e contra siano abbastanza oggettivi e quindi la ragionamento vicino ragione non va bene qui. Puoi controllare la domanda SU collegata, le risposte sono abbastanza ok.
Pietro,

Risposte:


122

Dal loro sito Web :

  • In che modo tmux è diverso dallo schermo GNU? Cos'altro offre?

tmux offre diversi vantaggi rispetto allo schermo:

  • un modello client-server chiaramente definito: le finestre sono entità indipendenti che possono essere collegate contemporaneamente a più sessioni e visualizzate da più client (terminali), nonché spostate liberamente tra le sessioni all'interno dello stesso server tmux;
  • un'interfaccia di comando coerente e ben documentata, con la stessa sintassi se utilizzata in modo interattivo, come associazione di tasti o dalla shell;
  • facilmente scrivibile dalla shell;
  • più buffer di pasta;
  • scelta di layout chiave vi o emacs;
  • un'opzione per limitare le dimensioni della finestra;
  • una sintassi della riga di stato più utilizzabile, con la possibilità di visualizzare la prima riga di output di un comando specifico;
  • una base di codice più pulita, moderna, facilmente espandibile, con licenza BSD.

Ci sono ancora alcune funzionalità incluse nella schermata che tmux omette:

  • supporto seriale e telnet integrato; questo è gonfio ed è improbabile che venga aggiunto a tmux;
  • supporto di piattaforme più ampio, ad esempio IRIX e HP-UX, e per terminali dispari.

4
accidenti ... ora voglio provare tmux ... solo perché lo schermo non ha funzionato per me a causa della mancanza di combinazioni di tasti vi.
xenoterracide,

1
Le combinazioni di tasti vi o emacs significano semplicemente che tmux viene fornito con due comodi set di impostazioni predefinite? È possibile riconfigurare completamente le combinazioni di tasti dello schermo con il suo file rc.
jw013,

È possibile definire associazioni di tasti arbitrarie. Vedi: openbsd.org/cgi-bin/…
nisc il

Quando parlano dell'implementazione, dovrebbero finalmente risolvere lo stupido bug con <C-Left>in vimin tmux.
yo'

45

Una differenza sta nel modo in cui i due agiscono quando più terminali sono collegati a una singola sessione.

Con lo schermo, la vista di ciascun terminale collegato è indipendente dalle altre. Con tmux, tutti i terminali collegati vedono la stessa cosa.

Supponi di avere due terminali collegati a una singola sessione di tmux. Se si digita ^B1 in un terminale, anche l'altro terminale passa alla finestra 1.

Quando si hanno due terminali collegati a una singola sessione dello schermo e si digita ^A1 in uno, non ha alcun effetto sull'altro terminale.

Questo si basa sulla mia esperienza con tmux 1.2; Vedo che 1.3 è uscito, ma non ho notato nulla nel log delle modifiche sul cambiamento di questo comportamento.

Se ti piace il comportamento dello schermo e lo desideri in tmux:

Se la tua sessione tmux originale viene chiamata 0(impostazione predefinita), puoi farlo tmux new-session -t 0) per avviare una nuova sessione indipendente connessa allo stesso set di finestre, che può quindi avere una propria vista.


1
Questa è una distinzione interessante. Sono sicuro che ognuno di questi ha dei vantaggi, per diversi casi d'uso. (vantaggio tmux: due persone associate alla stessa sessione tmux, ad esempio per la programmazione di coppie remote, vedrebbero sempre la stessa cosa; vantaggio schermo: una persona collegata alla stessa schermata da due punti per due scopi diversi può avere due viste diverse, anche contemporaneamente (con , diciamo, finestre affiancate (a livello di sistema operativo / windowmanager)).
collega il

10
se la tua sessione tmux originale si chiama "0" (impostazione predefinita), puoi fare "tmux new-session -t 0") per avviare una nuova sessione indipendente connessa allo stesso set di finestre, che può quindi avere la sua Visualizza. Sono abbastanza sicuro che questo abbia funzionato indietro in 1.2 / 1.3, ma non ricordo a memoria.
Cos

@cos questo è esattamente il consiglio che stavo cercando. Grazie mille. Vorrei poterti votare due volte :) Inizierò a ricollegarmi con 'tmux new-session -t 0' ogni volta.
jrwren,

@Cos È stato aggiunto "DA 1.0 A 1.1, 05 novembre 2009". @jrwren Il comando può essere in corto tmux new -t 0.
user285259

24

tmux è abbastanza nuovo rispetto allo schermo GNU. Vantaggi / Svantaggi è una domanda difficile, poiché entrambi i programmi risolvono approssimativamente lo stesso problema. tmux è concesso in licenza BSD mentre lo schermo è GNU GPL. Questo è importante per alcune persone.

lo schermo è più rappresentato (su Linux) al momento, cioè è più probabile che tu lo trovi su una determinata scatola di Linux rispetto a tmux. tmux è comunque più rappresentato su OpenBSD in quanto è incluso come parte dell'installazione di base.

Entrambi i programmi ti consentono di fare la stessa cosa, sebbene lo stato delle cose sia un po 'più complesso di così. Il passaggio tra i due non è eccessivamente complicato, poiché gran parte della funzionalità degli schermi ha trovato la sua strada in tmux, anche se se sei un utente esperto di uno, probabilmente troverai alcune frustrazioni quando passi all'altro.

Come con qualsiasi programma, dipende davvero dalle tue esigenze e con quali ti senti più a tuo agio. Provali entrambi e prova a giocare bene.

Per ulteriori informazioni su tmux, consultare https://tmux.github.io/


17

La differenza più grande nel mio uso è che nello schermo di Gnu puoi solo dividere i fotogrammi in orizzontale, mentre in Tmux puoi dividere sia in orizzontale che in verticale. Questo è un tipo di bersaglio mobile, anche se come ho detto qui che la divisione verticale sta entrando nello schermo .

A parte questo, le cose sono piatte.


10
puoi anche dividere verticalmente sullo schermo. mmm ... almeno non funziona con l'installazione della schermata di Ubuntu 10.10 predefinita.
Stann,

4
@andre c'è stata una patch di vecchia data per la divisione verticale dello schermo ... che non è mai stata incorporata nell'upstream ... ma sono sicuro che molte distro l'hanno applicata.
xenoterracide,

17

Ho pensato di menzionare solo il byobuwrapper disponibile per lo schermo che lo rende molto migliore fin dall'inizio. Non so se qualcosa di simile sia disponibile per tmux, ma ha byobureso il mio .screenrc solo una manciata di righe. Dai un'occhiata a questo breve articolo su byobu e schermate. La pagina del progetto per byobu descrive il nome che deriva da un termine giapponese per schermi decorativi multi-pannello che fungono da divisori pieghevoli. Inoltre, solo eseguirlo non danneggia le impostazioni dello schermo, quindi puoi provarlo in sicurezza. Una volta avviata la sessione byobu, puoi riconnetterti liberamente usando screene non perdere comunque le personalizzazioni effettuate byobu(quindi usalo solo per l'invocazione iniziale). I due vantaggi principali sono:

  • Avvia la schermata con un paio di barre di stato con informazioni utili
  • Fornisce molte combinazioni di tasti per accedere più facilmente alle funzionalità dello schermo

Non sto usando la parte dei tasti, ma trovo sicuramente utili le barre di stato.

Inoltre, potresti trovare utile Screen Vs tmux link. Penso che la maggior parte sia già menzionata dalle risposte esistenti.


La tua risposta sarebbe più utile se riassumi le funzionalità di byobu, come questa risponde con il suo elenco di funzionalità.
Gilles,

OK, ho aggiunto ulteriori informazioni byobu, ma è semplice come eseguire il comando e trovarlo da solo (è guidato dal menu), poiché non confonde le impostazioni dello schermo esistenti. E ho reso la mia risposta un wiki della comunità, quindi sentiti libero di modificarlo.
Haridsv,

1
byobu sembra effettivamente supportare anche tmux, almeno nelle versioni più recenti.
Darael,

12

Drench solleva un punto interessante: il comportamento predefinito di connettersi due volte alla stessa sessione è diverso in tmux. Tuttavia, se vuoi collegarti due volte e avere una vista indipendente delle finestre in quella sessione, inizia con tmux

tmux new-session -t <session name>

Ciò creerà una nuova sessione per te e alleggerirà le finestre della sessione già esistente. Se non hai nominato la tua prima sessione, puoi aggiungerne una con "rename-session".


12

Un grande svantaggio screenè che non è sviluppato attivamente. Le pagine dei bug hanno quasi 200 oggetti non assegnati che risalgono a 5 anni fa.

tmux ha anche alcuni problemi aperti, ma molto meno, ed è supportato più attivamente.


8

tmux è più recente e molte altre funzionalità.

Ho scoperto che un buon utilizzo dipende da una buona configurazione.

Uso vi (vim) per l'editing (ruby on rails) e ci sono alcune cose di installazione per farlo funzionare bene.

Ecco il mio file ~ / .tmux.conf con molte impostazioni utili:

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"

Tmux è più recente, ma "molte più funzionalità" implica che ha almeno una parità di funzionalità con lo schermo che non è il caso - Oltre a quanto menzionato altrove, il supporto multiutente di tmux è gravemente carente. Nessun acl o status, e solo in generale mostra la novità di tmux in quanto ciò che puoi fare non è molto raffinato.
semi

Buono a sapersi. Lo sto usando da un anno e non ho notato alcun bisogno di lucidare, anche se un po 'ungherese potrebbe aiutare. Notazione che è. ok bad pun;) Non avevo mai usato lo schermo prima di esso, quindi non ho notato i problemi menzionati. Sarebbe più difficile passare allo schermo e perdere le nuove funzionalità ora.
Michael Durrant,

8

Mi prenderò la libertà di aggiungere una differenza:

tmux è basato su ncurses mentre lo schermo non disegna elementi aggiuntivi. Se qualcuno usa un emulatore di terminale che supporta lo / gli scorrimento / i, lo scorrimento con lo schermo ma non con tmux (almeno nella configurazione predefinita). Lo stesso vale per la ricerca e funzionalità simili.


2
Non ho mai fatto scorrere con lo schermo come ... mai? : /
unperson325680

Sì, il mio TE supporta lo scorrimento e lo schermo si rompe ... Devo scorrere con lo schermo. -1 non sembra essere accurato.
xenoterracide,

@xenoterracide: Hmm. Hai parzialmente ragione. Lo schermo su alcune distribuzioni / sistemi (vecchio Gentoo) non lo rompe mentre su alcuni (nuovo Ubuntu) lo fa. Non ho idea del perché.
Maciej Piechotka,

forse una patch ... i nostri sono tutti sistemi a 5,5 centesimi
xenoterracide del

6

Ho avuto problemi a ottenere lo schermo per supportare utf-8 e 256 colori ma tmux ha funzionato immediatamente.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.