Byobu vs. GNU Screen vs. tmux - utilità e trasferibilità delle competenze [chiuso]


95

Finora ho usato Konsole per gestire più sessioni di shell ma non ho provato Byobu , GNU Screen e tmux , che offrono un supporto migliore per più shell. Tutti condividono una caratteristica principale, che è quella di consentire il distacco della sessione corrente e il successivo ricollegamento a quella vecchia sessione.

Per aiutarmi a scegliere uno strumento da imparare, vorrei sapere: in che modo differiscono nei seguenti aspetti?

  1. Caratteristiche (ovviamente)
  2. Maturità del progetto. Non voglio imparare uno strumento che sta cambiando troppo. I miglioramenti sono benvenuti, ma non mi piacciono le sorprese come le funzioni che scompaiono.
  3. Curva di apprendimento
  4. Disponibilità su diverse piattaforme. Se imparo uno strumento, mi piacerebbe poterlo usare su un server FreeBSD, un desktop SuSE o Ubuntu.
  5. Compatibilità con altri programmi shell interattivi. Posso ancora usare vime emacs -nw(modalità non finestra o modalità testo) nello stesso modo in cui sono abituato? Le scorciatoie da tastiera saranno in conflitto con quelle di altri strumenti?

Ho appena provato tutti e Byobu sembra una sorta di front-end per GNU Screen e tmux. Allora perché qualcuno ha creato Byobu invece di contribuire al progetto dello schermo GNU e di aggiungere nuove funzionalità? Perché Byobu non è una sorta di modalità di interfaccia avanzata nella schermata GNU? Se uso Byobu come strumento quotidiano con lo schermo GNU come backend, posso trasferire queste conoscenze per usare lo schermo GNU senza Byobu se una determinata macchina ha solo lo schermo GNU?


1
Commentando la mia stessa domanda. Dopo aver pubblicato, ho appena visto il numero di volte in cui ogni tag è stato usato in StackExchange: gnu-screen: 199 volte tmux: 125 volte byobu: 18 volte Significa che byobu non è ancora popolare? O quel byobu è così intuitivo che nessuno ha domande su come usarlo?
Keitai,

1
Perché byobuè solo un fork di screenfunzionalità extra, quindi si gnu-screenapplica il tag.
Grawity,

2
Secondo la documentazione ( manpages.ubuntu.com/manpages/precise/en/man1/byobu.1.html ) la configurazione predefinita di Byobu è usare tmux come backend predefinito. Se byobu è un fork di gnu screen, significa che tmux è meglio di gnu screen?
Keitai,

1
Interessante, non sapevo che ora supporta tmux, anche se rimane solo uno script wrapper - nemmeno apparentemente un fork. Ma sì, tmux è in qualche modo migliore di Screen (almeno così afferma la loro FAQ ).
Grawity,

22
Byobu non è una forchetta di niente! È uno strato sopra lo schermo e Tmux, simile a Gnome / KDE essendo uno strato sopra Xorg.
Dustin Kirkland,

Risposte:


32

Per la schermata Tmux vs GNU, leggi

e molte altre incarnazioni comparative che possono essere trovate sui blog e simili.

Alcuni termini generali che vengono spesso ripetuti:

  • Tmux è più recente. Ciò significa che è un po 'più elaborato (semplice divisione verticale, belle linee verdi) e un po' meno ben testato per es. Compatibilità (in misura trascurabile secondo i suoi sostenitori).
  • Tmux fa affidamento sulle risorse.
  • Lo schermo GNU si trova ovunque ed è probabilmente ancora più utilizzato.

A parte questo, si possono esaminare funzioni specifiche per l'una o l'altra alternativa e la preferenza personale dominerà la discussione. Personalmente usavo fortemente GNU Screen - ora uso Tmux.

Non ho trovato Byobu con "funzioni killer" per me. Fornisce un'astrazione in cui credo che nessuno sia necessario per i miei casi d'uso.


Un altro modo di osservarlo è notare che Byobu può usare GNU Screen o Tmux come backend, il che dimostra che le differenze rispetto a un utente POV sono per lo più superficiali.


268

Ottima domanda! Per quello che vale, sono l'autore e il manutentore di Byobu .

Byobu è un livello di configurazione, originariamente scritto per essere posizionato sopra lo schermo GNU , ma ora funziona anche su Tmux .

Ho iniziato a scrivere Byobu nel dicembre del 2008 , quando ho incontrato un gruppo di utenti Screen e Ubuntu Server su Googleplex e ho scoperto che tutti noi abbiamo mantenuto il nostro gruppo di hack accurati / divertenti / utili nelle nostre ~/.screenrcconfigurazioni. E abbiamo dovuto spostare manualmente quelli tra le dozzine o centinaia di server che abbiamo usato. Abbiamo iniziato a scambiare suggerimenti e trucchi e ho iniziato a raccoglierli nel progetto GPLv3 originale chiamato "profili dello schermo". Circa 6 mesi dopo, un'intera comunità si era sviluppata attorno ai " profili dello schermo " e il progetto è diventato molto più che un semplice hack dello schermo: avevamo utility di configurazione, plugin di stato in tempo reale e combinazioni di tasti. Quindi abbiamo rinominato il progetto "Byobu", che è una parola giapponese per quegli "schermi" eleganti e pieghevoli, ha l'ulteriore vantaggio di essere in grado di Google di "Byobu $ FOO" più di "Schermo $ FOO".

Con Byobu ora nella maggior parte delle distribuzioni Linux ( Ubuntu , Debian , Fedora , Arch ) e funzionale sulla maggior parte dei Mac / BSD e altri UNIX, offre lo stesso aspetto, comode combinazioni di tasti, informazioni dinamiche sullo stato del sistema in qualsiasi terminale che potresti bisogno di accedere.

Perché non contribuire al progetto GNU Screen? Un paio di ragioni ... Tutto ciò che funziona Byobu e le opzioni di configurazione. Nessuno di questi deve essere incluso nella base di origine dello schermo per funzionare. Alcune cose potrebbero funzionare meglio o funzionare meglio se Screen le includesse per impostazione predefinita, ma molte delle modifiche sono molto "supposte", che di solito sono difficili o impossibili da contribuire a un progetto a monte di 25 anni . Inoltre, il progetto GNU Screen si sta muovendo molto lentamente, se non del tutto. Ha più di 25 anni e non ha avuto un rilascio ufficiale dall'agosto del 2008 . Ogni distribuzione porta enormi pile di patch solo per mantenere il tuo / usr / bin / schermo funzionante e sicuro. ad esempio, Ubuntu e Debian attualmente trasportano 19K righe di codice in ~ 48patch .

Ho saputo di Tmux circa 2 anni fa e mi sono davvero innamorato del codice sorgente, del design, dell'interfaccia e della community attiva! Mi sono divertito molto di più a contribuire alla correzione di Tmux a monte e a discutere di argomenti sulla mailing list. E come utente Byobu che lo utilizza ovunque, volevo lo stesso aspetto e aspetto delle mie sessioni Tmux di quello che mi ero divertito in oltre 4 anni di Byobu. Quindi ho portato tutto il codice Byobu per funzionare altrettanto bene con Tmux come backend, come Screen. A partire dalla versione 5.0 di Byobu , Tmux è ora il backend predefinito, con Screen ancora supportato in modalità legacy. Byobu ora sfrutta molte delle moderne funzionalità di Tmux su schermo, tra cui il supporto 256 colori notevolmente migliorato, i caratteri UTF8 e la divisione delle finestre orizzontale / verticale.

Se sei soddisfatto delle impostazioni predefinite in Screen o Tmux, o vuoi scrivere i tuoi file di configurazione da zero, allora Screen e Tmux sono utility fantastiche che hanno aggiunto molti anni di efficienza alla nostra vita. Se sei interessato a una serie di configurazioni che estendono ed estendono ciò che Screen e Tmux fanno fuori dalla scatola, dai un'occhiata a Byobu!

Saluti, Dustin


16
Buona spiegazione Incredibile che lo schermo sia così pesantemente patchato - ha bisogno di un nuovo manutentore o qualcosa del genere? E byobu è fantastico - grazie.
nealmcb,

10
Vorrei poter votare due volte. Uso Byobu da anni ormai e solo recentemente ho appreso della complessità che mi sta nascondendo da tutto questo tempo.
Jamie Cook,

2
Uso sempre lo CTRL+` as escape. With schermo` e tmuxquesto funziona come un fascino, ma non con byobu(Debian 7.1 Wheezy).
Tino,

1
Ora che screenha un nuovo manutentore e lo sviluppo sembra aver preso piede, le cose cambiano?
muru,

Queste inadempienze supposte non potrebbero renderlo il progetto tmux più giovane? Sembra che alla risposta manchi un paragrafo "Perché non contribuire al progetto tmux?" xkcd.com/927
user2707671

12

Da un caso d'uso reale, la più grande differenza tra screened tmuxè il modo in cui gestiscono le finestre divise.

Una finestra in screenè un singolo pseudo-terminale. Se collegato a una screensessione, è possibile dividere il terminale in più aree, ognuna delle quali può visualizzare una screenfinestra. Più regioni possono visualizzare la stessa finestra. Le divisioni non fanno parte della sessione; se ti stacchi, le tue divisioni sono sparite.

Una finestra è tmuxcomposta da uno o più pseudo-terminali, uno per riquadro. Ciò significa che i riquadri persistono se si scollega e si ricollega in seguito. Significa anche che è possibile visualizzare solo una finestra alla volta tmuxe che i riquadri non possono essere condivisi tra più finestre. tmuxnon consentire una finestra per essere condiviso tra più sessioni, tuttavia.

Preferisco il modello utilizzato da tmux, ma non potrei sostenere che sia migliore del modello utilizzato da screen.


3
L'argomento pro tmuxè la Deutsche Bahn . Percorri un treno veloce, prova a lavorare su sshuna connessione mobile e vedrai rapidamente che il tmuxmodello è di gran lunga superiore, perché dopo una delle frequenti interruzioni della connessione non è necessario riorganizzare tutti i riquadri sul tuo jumphost dopo aver effettuato nuovamente l'accesso. SCNR
Tino,

3
se stai affrontando disconnessioni frequenti, ti suggerisco di esaminare Mosh che può recuperare automaticamente dal segnale perso, a differenza dissh
Ciprian Tomoiagă

4

Per me, il punto di svolta per tmux è stata l'implementazione della condivisione delle sessioni.

Nella schermata GNU, se si consente a un altro utente di connettersi a una sessione o se si ha semplicemente la sessione connessa a più di un terminale, possono operare in modo indipendente (il passaggio da una schermata A al terminale B dal terminale B non consente al terminale A di cambiare schermata sessione A).

Quanto sopra non è il caso di tmux (ancora?) O non sono ancora riuscito a trovare un modo per cambiare il comportamento.

Se qualcuno conosce un modo per cambiare questo comportamento in tmux o se tmux si aggiorna per cambiare questo comportamento o dare la possibilità di cambiare questo comportamento ora, si prega di lasciare un commento.


6
tmuxha una nozione di sessioni "collegate" con new-session -t shared. Le finestre "condivise" vengono visualizzate nella nuova sessione, le nuove finestre in una appaiono nell'altra e la chiusura di una finestra in una la chiude nell'altra. Tuttavia, la finestra visualizzata da ciascun client è specifica per la sessione effettiva allegata.
Chepner,
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.