tmux o screen: qual è la differenza

Entrambi tengono in esecuzione i programmi su un server dopo la disconnessione, e per questo scopo va bene uno qualsiasi. tmux ha una barra di stato e pannelli facili già di serie, e ogni azione è un comando con un nome che puoi usare negli script. GNU screen è lo strumento più vecchio e può anche collegarsi alle porte seriali. Se non hai ancora un'abitudine, tmux è l'inizio più semplice. Su un server che ha solo screen, usa screen.

Aggiornata il . tmux 3.5a e screen 4.09.01 su Debian 13 in un container usa e getta: sessioni avviate in background, elencate, con tasti inviati da fuori e chiuse. Controllato anche lo screen 4.00.03 incluso in macOS 27.

Affiancati

Operazionetmuxscreen
Tasto prefissoCtrl+bCtrl+a
Nuova sessione con nometmux new -s workscreen -S work
StaccarsiCtrl+b dCtrl+a d
Elencare le sessionitmux lsscreen -ls
Collegarsitmux attach -t workscreen -r work
Avviare in backgroundtmux new -d -s workscreen -dmS work
Nuova finestraCtrl+b cCtrl+a c
Dividere sopra e sottoCtrl+b "Ctrl+a S
Dividere affiancandoCtrl+b %Ctrl+a |
Regione o pannello successivoCtrl+b oCtrl+a Tab
Inviare tasti da uno scripttmux send-keys -t work 'ls' Enterscreen -S work -X stuff 'ls\n'
Barra di stato di serieSìNo
Porte serialiNoSì, per esempio screen /dev/ttyUSB0 115200
LicenzaISC e in stile BSDGPL

Differenze che contano nella pratica

Pannelli

Un pannello di tmux è una shell fin dal momento in cui dividi. Una nuova regione di screen è vuota e devi spostarti lì e premere Ctrl+a c.

Il tasto prefisso

In una shell, Ctrl+a di solito porta all'inizio della riga. Sotto screen per farlo premi Ctrl+a a. tmux usa Ctrl+b, che si usa meno spesso.

Script

Entrambi si possono pilotare dall'esterno, come mostra la tabella. tmux offre di più, per esempio tmux capture-pane -p per leggere lo schermo e tmux has-session per verificare se esiste una sessione.

Disponibilità

Nessuno dei due è sicuro di trovarsi su un server minimale, ma puoi installare l'uno o l'altro dai repository standard su Debian e Ubuntu:

sudo apt install tmux
sudo apt install screen

Debian 13 ha nei pacchetti tmux 3.5a e screen 4.9.1. macOS include ancora screen 4.00.03 del 2006, e niente tmux. Per il tmux aggiornato su un Mac, usa Homebrew: brew install tmux.

Quando una sessione non si può riattaccare

Una sessione ancora attaccata altrove non si apre con un semplice screen -r, che stampa There is no screen to be resumed matching work. Usa screen -d -r work per staccarla prima dall'altro posto. In tmux, tmux attach -d -t work fa la stessa cosa.

Per l'elenco completo dei comandi di tmux, vedi il cheat sheet di tmux.

Perché una sessione sopravvive a una connessione caduta lo spiega mantenere vive le sessioni SSH con tmux.

Domande

tmux è meglio di screen?

Per tenere i programmi attivi dopo la disconnessione vanno bene entrambi. tmux è più semplice per iniziare, grazie a barra di stato, pannelli pronti e comandi da script. screen serve per le porte seriali o quando è l'unico strumento sul server.

Quale dei due è installato di serie?

Su un server minimale non è detto che ci sia nessuno dei due. Su Debian e Ubuntu installi l'uno o l'altro con sudo apt install tmux o sudo apt install screen.

Una sessione tmux si può aprire da due posti insieme?

Sì. tmux attach -t work entra in una sessione già agganciata altrove, e tmux attach -d -t work prima la stacca dall'altro posto.

Fonti

Altro in Sessioni e tmux

Tutte le guide