Abbiamo già imparato a usare GNU Screen per gestire più sessioni Terminale. Oggi vedremo ancora un'altra nota utility da riga di comando denominata "Tmux" , utilizzato anche per gestire più sessioni di Terminale. Questa guida spiega cos'è Tmux e l'utilizzo dei comandi Tmux con esempi in Linux.
1. Cos'è Tmux?
Simile a GNU Screen, Tmux è anche un multiplexer di Terminale che ci consente di creare un numero di sessioni di terminale ed eseguire più di un programma o processo contemporaneamente all'interno di una singola finestra di Terminale.
Tmux è un programma gratuito, open source e multipiattaforma che supporta Linux, OpenBSD, FreeBSD, NetBSD e Mac OS X.
2. Installa Tmux in Linux
Tmux è disponibile nei repository ufficiali della maggior parte delle distribuzioni Linux.
Per installare Tmux in Alpine Linux, esegui:
$ sudo apk add tmux
Su Arch Linux e le sue varianti come EndeavourOS e Manjaro Linux, esegui il comando seguente per installarlo.
$ sudo pacman -S tmux
Su Debian, Ubuntu, Linux Mint, Pop_OS!:
$ sudo apt-get install tmux
Su Fedora, RHEL, CentOS, AlmaLinux, Rocky Linux:
$ sudo dnf install tmux
Oppure,
$ sudo yum install tmux
Su SUSE/openSUSE:
$ sudo zypper install tmux
Bene, abbiamo appena installato Tmux. Andiamo avanti e vediamo alcuni esempi su come usare Tmux.
3. Tmux comanda l'utilizzo con esempi
La scorciatoia predefinita del prefisso per tutti i comandi in Tmux è Ctrl+b
. Ricorda solo questa scorciatoia da tastiera quando usi Tmux.
Avviso: Il prefisso predefinito per tutti gli schermi comandi è Ctrl+a .
3.1. Creazione di sessioni Tmux
Per creare una nuova sessione Tmux e collegarla ad essa, esegui il seguente comando dal Terminale:
$ tmux
Oppure,
$ tmux new
Una volta che sei all'interno della sessione di Tmux, vedrai una barra verde in basso come mostrato nello screenshot qui sotto.

È molto utile verificare se ci si trova all'interno di una sessione Tmux o meno.
3.2. Distacco dalle sessioni di Tmux
Per staccare da una sessione Tmux corrente, premi semplicemente Ctrl+b
e d
. Non è necessario premere entrambe le scorciatoie da tastiera alla volta. Per prima cosa premi "Ctrl+b"
e quindi premere "d"
.
Una volta disconnesso da una sessione, vedrai un output simile a quello di seguito.
[detached (from session 0)]
3.3. Creazione di sessioni con nome
Se utilizzi più sessioni, potresti confonderti su quali programmi sono in esecuzione su quali sessioni. In questi casi, puoi semplicemente creare sessioni con nome.
Ad esempio se si desidera eseguire alcune attività relative al web server in una sessione, è sufficiente creare la sessione Tmux con un nome personalizzato, ad esempio "webserver" (o qualsiasi nome a tua scelta).
$ tmux new -s webserver
Ecco la nuova sessione denominata Tmux.

Come puoi vedere nello screenshot qui sopra, il nome della sessione di Tmux è server web . In questo modo puoi facilmente identificare quale programma è in esecuzione su quale sessione.
Per staccare, premi semplicemente Ctrl+b
e d
.
3.4. Elenca le sessioni di Tmux
Per visualizzare l'elenco delle sessioni Tmux aperte, eseguire:
$ tmux ls
Risultato di esempio:

Come puoi vedere, ho due sessioni Tmux aperte.
3.5. Creazione di sessioni separate
A volte, potresti voler semplicemente creare una sessione e non volerti allegare ad essa automaticamente.
Per creare una nuova sessione separata denominata "otechnix" , esegui:
$ tmux new -s ostechnix -d
Il comando precedente creerà una nuova sessione Tmux chiamata "otechnix", ma non si collegherà ad essa.
Puoi verificare se la sessione è stata creata usando tmux ls
comando:

3.6. Allegando alle sessioni di Tmux
Puoi collegarti all'ultima sessione creata eseguendo questo comando:
$ tmux attach
Oppure,
$ tmux a
Se vuoi collegarti a una sessione denominata specifica, ad esempio "otechnix", esegui:
$ tmux attach -t ostechnix
Oppure, in breve:
$ tmux a -t ostechnix
3.7. Uccidi le sessioni di Tmux
Quando hai finito e non hai più bisogno di una sessione Tmux, puoi terminarla in qualsiasi momento con il comando:
$ tmux kill-session -t ostechnix
Per uccidere quando è collegato, premi Ctrl+b
e x
. Premi "y"
per terminare la sessione.
Puoi verificare se la sessione è chiusa con tmux ls
comando.
Per uccidere il server Tmux insieme a tutte le sessioni Tmux, eseguire:
$ tmux kill-server
Stai attento! Questo terminerà tutte le sessioni di Tmux anche se ci sono lavori in esecuzione all'interno delle sessioni senza alcun avviso.
Quando non c'erano sessioni Tmux in esecuzione, vedrai il seguente output:
$ tmux ls no server running on /tmp/tmux-1000/default
3.8. Dividi le finestre della sessione Tmux
Tmux ha un'opzione per dividere una singola finestra di sessione Tmux in più finestre più piccole denominate riquadri Tmux .
In questo modo possiamo eseguire diversi programmi su ogni riquadro e interagire con tutti contemporaneamente.
Ciascun riquadro può essere ridimensionato, spostato e chiuso senza influire sugli altri riquadri. Possiamo dividere una finestra di Tmux orizzontalmente o verticalmente o entrambi contemporaneamente.
3.8.1. Dividi i riquadri orizzontalmente
Per dividere un riquadro orizzontalmente, premi Ctrl+b
e "
(virgolette singole).

Usa la stessa combinazione di tasti per dividere ulteriormente i riquadri.
3.8.2. Dividi i riquadri verticalmente
Per dividere un riquadro verticalmente, premi Ctrl+b
e %
.

3.8.3. Dividi i riquadri orizzontalmente e verticalmente
Possiamo anche dividere un riquadro orizzontalmente e verticalmente allo stesso tempo. Dai un'occhiata allo screenshot seguente.

Innanzitutto, ho eseguito una divisione orizzontale premendo Ctrl+b
"
e poi dividi verticalmente il riquadro inferiore premendo Ctrl+b
%
.
Come puoi vedere nello screenshot sopra, sto eseguendo tre diversi programmi su ogni riquadro.
3.8.4. Passa da un riquadro all'altro
Per passare da un riquadro all'altro, premi Ctrl+b e Tasti freccia (sinistra, destra, su, giù) .
3.8.5. Invia comandi a tutti i riquadri
Nell'esempio precedente, eseguiamo tre diversi comandi su ciascun riquadro. Tuttavia, è anche possibile eseguire l'invio degli stessi comandi a tutti i riquadri contemporaneamente.
Per farlo, premi Ctrl+b
e digita il seguente comando e premi ENTER
:
:setw synchronize-panes
Ora digita qualsiasi comando su qualsiasi riquadro. Vedrai che lo stesso comando si riflette su tutti i riquadri.
3.8.6. Scambia i riquadri
Per scambiare i riquadri, premi Ctrl+b
e o
.
3.8.7. Mostra i numeri dei riquadri
Premi Ctrl+b
e q
per mostrare i numeri dei riquadri.
3.8.8. Elimina i riquadri
Per chiudere un riquadro, digita semplicemente exit
e ENTER
chiave. In alternativa, premi Ctrl+b
e x
. Vedrai un messaggio di conferma. Basta premere "y"
per chiudere il riquadro.

4. Ingrandisci e rimpicciolisci i riquadri Tmux
Possiamo ingrandire i riquadri di Tmux per adattarli alle dimensioni complete della finestra del Terminale corrente per una migliore visibilità del testo e per visualizzare più contenuti.
È utile quando hai bisogno di più spazio o ti concentri su un'attività specifica. Dopo aver terminato quell'attività, puoi rimpicciolire (rimuovere lo zoom) il riquadro Tmux nella sua posizione normale. Maggiori dettagli nel seguente link.
- Come ingrandire i riquadri Tmux per una migliore visibilità del testo
5. Avvio automatico delle sessioni Tmux
È sempre buona norma eseguire un processo di lunga durata all'interno di una sessione Tmux quando si lavora con sistemi remoti tramite SSH.
Perché ti impedisce di perdere il controllo del processo in esecuzione quando la connessione di rete si interrompe improvvisamente.
Un modo per evitare questo problema è avviare automaticamente le sessioni di Tmux. Per maggiori dettagli, fare riferimento al seguente link.
- Avvia automaticamente la sessione Tmux sul sistema remoto quando si accede tramite SSH
Conclusione
In questa guida, abbiamo discusso l'utilizzo dei comandi Tmux con esempi. A questo punto, avrai un'idea di base dell'utilità della riga di comando di Tmux e di come utilizzare Tmux per gestire più sessioni di Terminale. Per maggiori dettagli, fare riferimento alle pagine man.
$ man tmux
Sia le utility GNU Screen che Tmux possono essere molto utili quando si gestiscono i server in remoto tramite SSH. Impara a fondo i comandi Screen e Tmux per gestire i tuoi server remoti come un professionista.