Prima di Red Hat Enterprise Linux 8, la screen
il comando era incluso. Nella versione 8, è stata presa la decisione di deprecare screen
e usa tmux
invece. tmux
è un multiplexer di terminale, il che significa che puoi avere un processo in esecuzione, disconnetterti dal sistema e quindi riconnetterti in un secondo momento e da un computer diverso in modo da poter continuare a lavorare in quel processo. Un modo semplice per dimostrarlo è inviare tramite SSH a un sistema remoto, avviare tmux
, e quindi dall'interno, avvia un ping
comando a un sistema remoto, disconnettersi da tmux
, riprendi tmux
e vedrai che il ping
sta ancora andando. Alcuni dei casi d'uso comuni per questo sono:
- Se hai un processo di lunga durata, come un aggiornamento di un'applicazione, e non vuoi lasciare la sessione ssh in esecuzione per tutto il tempo o temi che la tua connessione di rete possa interrompersi. li>
- Inoltre, se hai più sessioni in esecuzione, puoi utilizzare le etichette per le diverse sessioni.
- Se vuoi che qualcun altro veda cosa stai facendo, puoi avviare un
tmux
sessione e quindi fai in modo che l'altra persona SSH nel tuo sistema e si colleghi a queltmux
sessione.
Per avviare una sessione di base, esegui semplicemente tmux
comando. Questo ti porta in un tmux
sessione e sarai in grado di eseguire comandi e fare cose proprio come faresti normalmente come tuo utente. Per disconnetterti dalla sessione, ma continua a lasciarla in esecuzione, premi Ctrl+B e poi D . Per riprendere la sessione, posso eseguire:
$ tmux ls ### to see if there are any other tmux sessions
$ tmux a ### this will connect to the most recent session that was created.
Se ci sono più sessioni, puoi connetterti in base al numero della sessione:
[root@opendemo ~]# tmux ls
0: 1 windows (created Thu Jan 28 19:58:27 2021) [103x22]
1: 1 windows (created Thu Jan 28 20:00:54 2021) [103x22]
2: 1 windows (created Thu Jan 28 20:01:08 2021) [103x22]
3: 1 windows (created Thu Jan 28 20:01:39 2021) [103x22]
[root@opendemo ~]# tmux a -t 1
[detached]
[root@opendemo ~]#
Un esempio di come lo uso è che l'ultimo comando del mio script di avvio personale che si connette alla VPN e fa altre cose è eseguire:
# /usr/bin/ssh -t shell-el7.redhat.com tmux attach
Questo mi collega tramite SSH a quel server remoto e quindi si collega al mio tmux
sessione che so esiste con irssi
in esecuzione. Per informazioni sull'utilizzo di irssi
, consulta il mio articolo Usare Irssi all'interno di una sessione Linux tmux.
[ Potrebbe interessarti anche: Building with Buildah:Dockerfiles, command line or scripts]
Il secondo caso d'uso di esempio sopra riguardava l'etichettatura delle diverse sessioni. Ora che abbiamo esaminato alcune delle nozioni di base sull'utilizzo di tmux
, vediamo un esempio di utilizzo delle etichette:
[root@opendemo ~]# tmux new -s "database upgrade"
[detached]
[root@opendemo ~]# tmux new -s "other process"
[detached]
[root@opendemo ~]# tmux ls
database upgrade: 1 windows (created Thu Jan 28 19:50:03 2021) [103x22]
other process: 1 windows (created Thu Jan 28 19:50:23 2021) [103x22]
[root@opendemo ~]# tmux attach -t "database upgrade"
[detached]
[root@opendemo ~]#
Potresti notare che se hai del testo che scorre oltre la parte superiore dello schermo, non puoi semplicemente premere Pagina su chiave per vederlo.
Per poter usare i tasti cursore in tmux
per tornare nel buffer, premi Ctrl+B e poi [ chiave. A questo punto, potrai utilizzare la Freccia chiavi, Pagina su o Pagina giù per spostarsi nell'output sullo schermo.
Se vuoi dividere il tmux
sessione in diversi riquadri, puoi dividere la sessione verticalmente con Ctrl+B e poi % . Per dividere il riquadro orizzontalmente, dovresti usare Ctrl+B e poi una doppia virgoletta singola “ . Nello screenshot qui sotto, ho prima diviso la sessione verticalmente, quindi ho diviso il riquadro destro orizzontalmente.
Per spostare il cursore da un riquadro all'altro, dovresti utilizzare Ctrl+B e poi qualsiasi Freccia per muoverti in quella direzione.
Per terminare una sessione senza collegarsi ad essa e quindi digitare exit
, useresti kill-session
e quindi specificare la sessione da terminare:
Ci sono più opzioni per tmux
e sono disponibili per la visualizzazione utilizzando Ctrl+B e poi ? :
[ Impara le basi dell'uso di Kubernetes in questo cheat sheet gratuito. ]
Ulteriori letture possono essere trovate nella pagina man di tmux
. Questo articolo ha fornito una rapida introduzione all'uso di tmux
comando in modo che una sessione remota disconnessa non finisca per uccidere accidentalmente un processo. Un altro programma simile a tmux
è screen
e puoi leggere lo screen
in questo articolo.