[SysAdmin] TMUX o Multiplexer Terminal

Oltre un semplice terminale, che ci permette di lavorare in multitasking e di effettuare un detach dello stesso terminale, come ci aveva già abituato screen

Sicuramente TMUX è un MUST HAVE nella suite di tool indispensabili per un SysAdmin e una volta imparato ad usarlo, non ne potete fare a meno!

Chi lavora con i terminali sa benissimo che non bastano mai, si ha sempre la necessità di una “finestra” in più, quindi ci si ritrova sempre ad avere N connessioni in SSH sul server, soggette a timeout di connessione o simili. Altro problema è quando ci si deve disconnettere dal terminale remoto senza effettuare il blocco dell’applicazione o di quello che in quel momento sta processando il terminale. In passato si usava il comando fg e bg, per mettere il programma attualmente in esecuzione in BackGround o riportarlo in Foreground, ma in ogni caso, la chiusura del terminale o della sessione remoto portava alla distruzione di quella shell e di conseguenza al kill del programma.

Inizialmente venne in aiuto Screen, terminale multiplexer che permetteva di aprire N Sessioni di Terminale dedicate. Attraverso Screen era possibile mettere in background la sessione, oppure direttamente effettuare un detach della stessa. Questo permetteva di chiudere una sessione remota senza pericolo di perdere lo stato di esecuzione di un programma o un processo direttamente dipendente dal terminale attivo. Screen si è rivelato un tool molto importante ed interessante e TMUX non è altro che l’erede che ha aggiunto altre features interessanti.

Con TMUX puoi lavorare con più terminali in una sessione, dividerli o separarli in riquadri mediante comandi da riga di comando.
Il principio di funzionamento di TMUX si basa su 3 aspetti fondamentali:

  • Sessioni
  • Finestre
  • Panes

Le Sessioni
La sessione è il modo in cui vengono distinte ogni avvio di un terminale all’interno dei quali sarà possibile eseguire comandi e programmi.

Le Finestre
La finestra è il modo in cui può essere divisa una sessione; ogni finestra, a sua volta, potrà eseguire comandi univoci o paralleli, sempre all’interno della stessa sessione di lavoro.

I Panes
Il Pane è un ulteriori possibile suddivisione di ogni finestra. Suddividendo una finestra in panes si ha la possibilità di configurare questi ultimi a proprio piacimento.

Comandi base

Per avviare una sessione TMUX, basta digitare il comando

tmux

Per avviare una nuova sessione, rinominandola all’avvio, basta digitare il comando

tmux new -s [nome di sessione]

Per terminare la sessione TMUX, basta digitare il comando

exit

Ripristinare la connessione all’ultima sessione, basta digitare

tmux a -t [nome di sessione]

oppure

tmux a #

Per visualizzare tutte le sessioni attive, basta digitare

tmux 1s

Per cancellare una sessione, basta digitare il comando

tmux kill-session -t [nome di sessione]

Shortcut

TMUX è dotato di una serie di “scorciatoie” che permettono con una serie di combinazioni di tasti di eseguire delle azioni, che possono essere anche personalizzate. Per attivare queste scorciatoie è necessario effettuare una combinazioni di tasti “PREFIX” prima di anteporre lo shortcut. Nella fattispecie il PREFIX di default di TMUX è CTRL + b

Tra le shortcut più utilizzate troviamo:

Comandi per le sessioni:

<PREFIX> + S: visualizza tutte le sessioni e passa da una sessione all’altra
<PREFIX> + $: rinomina la sessione attuale
<PREFIX> + D: distacca la sessione esistente (“detach”) e la sposta in background
<PREFIX> + ?: visualizza le combinazioni di tasti attualmente attive (apre l’area di supporto)

Comandi per le finestre:

<PREFIX> + C: crea/apre una nuova finestra
<PREFIX> + W: elenca tutte le finestre esistenti, passa da una finestra all’altra
<PREFIX> + L: passa all’ultima finestra utilizzata
<PREFIX> + P: passa alla finestra cronologicamente precedente
<PREFIX> + N: passa alla finestra cronologicamente successiva
<PREFIX> + ,: rinomina la finestra attuale
<PREFIX> + &: termina la finestra attuale (confermare con “y”)
<PREFIX> + 1, 2, 3, (…): passa alla finestra numero X
<PREFIX> + [: attiva la modalità scrolling (scorrere nella finestra attuale utilizzando i tasti freccia)

Comandi per i panes:

<PREFIX> + X: chiude il pane attuale
<PREFIX> + %: divide verticalmente il pane attuale (crea un secondo pane nella finestra)
<PREFIX> + “: divide orizzontalmente il pane attuale (crea un secondo pane nella finestra)
<PREFIX> + Tasti freccia (sinistra, destra, in alto, in basso): per navigare tra i panes
<PREFIX> + H: passa al pane a sinistra
<PREFIX> + I: passa al pane a destra
<PREFIX> + J: passa al pane in basso
<PREFIX> + K: passa al pane in alto
<PREFIX> + Q: mostra il numero di pane
<PREFIX> + O: naviga cronologicamente attraverso tutti i panes
<PREFIX> + }: sostituisce il pane attuale con quello successivo
<PREFIX> + {: sostituisce il pane attuale con quello precedente
<PREFIX> + Barra spaziatrice: passa da una suddivisione dei panes a un’altra
<PREFIX> + !: svincola i panes attuali e li apre in una nuova finestra

Quindi riassumendo TMUX permette di:

  • Proteggere i programmi in esecuzione su un server remoto dalle interruzioni della connessione eseguendoli all’interno di TMUX.
  • Consentire l’accesso ai programmi in esecuzione su un server remoto da più computer locali diversi.
  • Lavorare con più programmi e shell insieme in un unico terminale, un po’ come un gestore di finestre.

Curioso e con tanta voglia di sapere, fui attratto dal mondo dell'informatica, in cui mi ci buttai a capofitto. Dal 2005, ho fatto della mia passione principale, il Networking associato al mondo dei sistemi in ambiente Gnu/Linux, il mio lavoro quotidiano.

Comments are closed.