La persistenza viene definita come la possibilità di disconnettersi da un terminale senza alcun task in funzione e di riconnettersi tempo dopo anche da una macchina differente senza alcun inconveniente. VNC e il Desktop Remoto sono solo alcuni esempidi terminali persistenti. Con il comando monitor e SSH si possono creare delle sessioni persistenti in ambiente linux.

Installazione di GNU Screen

Eseguire i seguenti comandi su Debian e Ubuntu per garantire che il sistema sia aggiornato e per installare screen:

apt-get update
apt-get upgrade
apt-get install screen
Per CentOS e Fedora, usare i seguenti comandi:

yum update
yum install screen

Avviare la sessione screen

Una volta installato è possibile avviare Screen con il comando screen -s screenname, screenname è il nome utilizzato per identificare in seguito la sessione.

La finestra che si apre è del tutto simile ad una finestra di xterm. Per visualizzare l’elenco delle sessioni aperte :

screen -ls
Otterrai qualcosa come:
There are screens on:
4222.screenname (Attached)
13921.securing (Attached)
2 Sockets in /var/run/screen/user.

Iniziare a lavorare con la sessione di Screen

Nella nostra nuova sessione screenname possiamo, per esempio, lanciare la compilazione di un sorgente e lasciarla “girare”.

Se tempo dopo volessimo collegarci da una macchina remota per verificare lo stato dell’operazione precedentemente lanciata, come prima cosa dovremo collegarci tramite ssh al VPS

ssh remotemachine
e quindi agganciarci alla sessione screen. E’ possibile farlo in diversi modi :
“screen -dr ” sgancerà (detach) la sessione già aperta con un altro terminale e la riaggancerà con il nostro “senza perdere la sessone di lavoro”
“screen -x ” aggancerà (attach) una sessione screen gia’ aperta senza sgancialra. Questo comando e’ utile se volete accedere in due alla stessa sessione in contemporanea
“screen -DDR ” sgancerà (detach) la sessione già aperta con un altro terminale e la riaggancerà con il nostro forzando la cosa se necessario. Questo comando e’ utile nel caso in cui con l’opzione -dr non si riuscisse a prendere il controllo del terminale
“screen -X [comando]” lancerà una sessione screen ma invece di caricare una shell caricherà il comando indicato. Nel caso in cui creiate delle altre finestre screen le stesse lanceranno il comando indicato.
con screen potrete continuare il vostro lavoro come se foste collegati alla vostra sessione di lavoro originaria.

Gestire le Sessioni di Screen

Dopo aver lanciato Screen o esserci collegati ad una sessione esistente, tutte le interazioni con Screeen avverranno attraverso la combinazione dei tasti CTRL+”A” o “C-a” seguiti da altre lettere. Vediamo le seguenti sequenze che rappresentano un subset base di comandi:

“C-a a” invia un comando “C-a al programma o alla shell in esecuzione.
“C-a c” crea una nuova finestra sullo schermo. Le finestre dello schermo sono numerate a partire da 0, ed esegue la shell di default fino a che la sessione screen non viene terminata con il comando “screen -X [command]”.
“C-a “” visualizza un elenco di tutte le sessioni screen attive, compreso il nome assegnato e e l’identificatore
“C-a x” passa alla finestra precedente che si era messa a fuoco. Usare questo per commutare tra due finestre.
“C-a n” e “C-a p” passano il focus rispettivamente alla finestra screen successiva e precedente.
“C-a k” termina la finestra screen corrente.
“C-a A” creerà un prompt permette di cambiare il nome della finestra screen corrente.
“C-a d” stacca la sessione corrente dalla sessione di Screen.
“C-a ?” visualizza una schermata di aiuto che fornisce una panoramica più ampia delle funzioni di Screen.

Molto interessante.