Multiplexer per terminali - parte 2 - tmux

terminal_multiplexer screen

In questo secondo articolo dopo la pausa estiva 2016 ho deciso di riprendere un argomento lasciato aperto alcuni mesi fa: l'utilizzo di multiplexer per terminali in ambiente Linux per mantenere attive più sessioni.

Avevamo visto l'applicazione screen nella prima parte di questa serie. Adesso vediamo tmux, concentrandoci in particolare sulla differenza tra Sessione, Finestra e Pane.

Iniziamo con l'installazione. Aprite un terminale è digitate:

sudo apt-get install tmux

Ora che avete installato tmux, vediamo lo stesso esempio utilizzato nella prima parte: dopo esserci collegati in ssh ad un server remoto, eseguire uno script python (script_python.py) che prevede molto tempo per arrivare a termine, senza interrompere l'esecuzione alla chiusura del terminale.

Sessioni

Per prima cosa, una volta collegati al server, dobbiamo creare una nuova sessione tmux.

tmux new -s session1

Session1

Dove session1 è l'identificativo della sessione appena creata. Se avete intenzione di usare tmux abitualmente, vi consiglio di nominare le sessioni in maniera più "espressiva" di quanto mostrato in questo tutorial.

Per uscire da una sessione, senza chiuderla, vi basterà digitare:

tmux detach

Una volta usciti potrete creare altre nuove sessioni con lo stesso comando visto prima, oppure rientrare in una sessione già presente con il comando:

tmux attach -t session1

Potrete invece alternarvi tra differenti sessioni senza uscire da quella in corso con il comando:

tmux switch -t session2

Per visualizzare l'elenco delle sessioni attive, digitate:

tmux list-sessions

Vi si aprirà un elenco come quello mostrato nell'immagine:

list_session

Finestre

Notate nell'immagine che accanto ad ogni identificativo della sessione è mostrato il numero di finestre (window) aperte. Questo perchè per ogni differente sessione potrete scorrere, come delle tab, tra più finestre, utilizzando la combinazione CTRL + B allo stesso modo con cui si utilizza CTRL+A con screen.

  • CTRL + B C: creare una nuova finestra.
  • CTRL + B N (P): scorrere verso la finestra successiva (precedente).
  • CTRL + B W: mostrare la lista delle finestre relative alla sessione.

Tornando adesso all'esempio iniziale, abbiamo la nostra sessione, per la quale creiamo due finestre. Nella prima avviamo lo script con il solito comando python script_python.py. Fatto ciò, ci spostiamo nella seconda, dalla quale gestiamo la sessione con i comandi imparati nella prima parte di questo tutorial.

Oltre a questo esempio, a cosa vi può servire utilizzare più finestre in un'unica sessione?
Mettiamo il caso che oltre a lanciare uno script su un server remoto, dovete anche modificare alcuni file di un progetto. Potete per esempio aprire con nano o con vim un file di testo per ogni finestra e alternarvi tra questi come fareste in un IDE grafico.

Pane

Veniamo infine alla particolarità più amata di tmux: la gestione a pannelli delle finestre. Utilizzando la combinazione CTRL + B N o P, potete scorrere tra le finestre come fossero le tab di un browser. Ma utilizzando le combinazioni CTRL + B % e CTRL + B " potrete suddividere la vostra finestra in pannelli rispettivamente orizzontalmente e vericalmente, come mostrato nell'immagine sottostante:

panel

Potete utilizzare la combinazione di tasti CTRL + B FRECCE DIREZIONALI
per spostarvi da un pannello all'altro del vostro terminale.
I pannelli sono estremamente utili se avete bisogno di tenere sotto controllo più flussi contemporaneamente.

Combinazioni scomode

In molti tutorial e blog consigliano di sostituire il prefisso CTRL + B con il più "accessibile" CTRL + A. Questa scelta può essere utile anche a chi si è appena spostato da screen a tmux. Per ottenere tale risultato, vi basterà aggiungere le seguenti linee di codice nel file tmux.conf

set -g prefix C-a
unbind C-b
bind C-a send-prefix

Con questo concludiamo la seconda parte della serie sui multiplexer per ambiente Linux.
Come sempre, vi invito a lasciare commenti con domande, dubbi o correzioni, sotto all'articolo.

Alessio Antonielli

Ingegnere informatico, appassionato di cinema, musica, videogiochi e serie tv. Insomma, le solite cose che vi aspettereste da un ex studente di Ingegneria Informatica, giusto per rafforzare lo stereotipo…

Multiplexer per terminali - parte 2 - tmux ultima modifica: 2016-09-27T11:48:34+00:00 da Alessio Antonielli


Advertisment ad adsense adlogger