Condividere e’ bello con Screen

screen_terminalSCREEN appartiene a quella categoria di applicativi molto potenti ma poco conosciuti, basta però utilizzarlo anche una sola volta per non poterne più fare a meno. Tecnicamente è un multiplexer per terminale, ovvero un applicativo con cui eseguire, all’interno di una console, molti comandi contemporaneamente, oppure connettersi allo stesso schermo virtuale da più console.

Proprio questa seconda opportunità è quella preferita dagli utenti GNU/Linux, infatti, tramite screen si può lanciare un programma, disconnettersi dal suo output, fare altro e riagganciarsi ad esso in un altro momento senza aver perso nulla!

Ma cerchiamo di spiegarci meglio; sicuramente per lavoro, sia chi usa Linux che chi usa Windows, acra’ dovuto connettersi in remoto su altre macchine e spesso si usano tool quali Putty, diciamo che per varie necessita’ le operazioni di calcolo lanciate sulla macchina su cui operate occupano parecchio tempo e non potete fare log-out per non perdere l’attivita’ iniziata…., bene, nel mondo unix e linux esistono due soluzioni a questo problema e si tratta delle utility `nohup` e `screen`. In questo articolo spiegherò come usare  “screen“.

Iniziamo con l’installazione :

sudo apt-get install screen

Fatto questo, si può avviare screen, semplicemente digitando nel terminale della macchina remota:

screen

e si avra’ subito una sessione in cui poter lavorare.
Per inviare comandi direttamente a screen, si usa la combinazione di tasti CTRL-a (abbreviati in seguito con C-a) e poi va digitato il comando.
Ad esempio, per avviare una nuova sessione, basta digitare C-a c, oppure per avere l’elenco dei comandi, C-a ?.
Le combinazioni sicuramente necessarie da sapere sono:

C-a ? :: visualizza la pagina di aiuto
C-a c :: avvia una nuova sessione
C-a n :: torna alla sessione precedente
C-a p :: va alla sessione successiva
C-a h :: crea un file di log per la sessione
C-a m :: avvia monitoraggio per una sessione
C-a a :: va alla sessione che ha segnalato un evento di monitoraggio
C-a d :: stacca il terminale da screen, lasciando il processo attivo
C-a k :: chiude la sessione corrente di screen

Ora, cosa succede se mi disconnetto senza chiudere screen? Viene semplicemente lasciata aperta la sessione, ed al nuovo accesso, basterà digitare:

screen -ls

per avere l’elenco delle sessioni attualmente attive, es :

@tuttiperlinux:~$ screen -ls
There is a screen on:
326.pts-2.tuttiperlinux (01.10.2014 09:50:57) (Attached)
1 Socket in /var/run/screen/S-tuttiperlinux.

e per riconnettersi alla sessione, basterà digitare:

screen -r 326

o piu’ semplicemente “screen -r” se esiste una sola sessione attiva.

Se la vostra necessita’ e’ invece quella di condividere una sessione di lavoro/diagnosi con altri colleghi potrete, ad esempio collegarvi remotamente tutti sullo stesso server , successivamente usare una utenza specifica per la manutenzione del servizio in questione e collegarvi tutti alla stessa sessione, esempio :

screen -x <user>; #che potra' essere tomcat, come apache ecc...

condividendone lo stesso terminal e potendo cosi interagire avendo davanti a voi tutto cio’ che succede sulla macchina a prescindere da chi stia impartendo i comandi.

Caratteristiche principali

Persistenza
Similmente a tool quali VNC, “screen” permette all’utente di avviare delle applicazioni da un computer e poi riconnettersi da un altro computer e continuare ad usare la stessa applicazione senza farla ripartire. Questo rende gli spostamenti, come ad esempio tra casa e lavoro, molto più semplici. Screen fornisce una funzionalità terminal-agnostic (ovvero funziona indipendentemente dal terminale utilizzato) perciò gli utenti possono disconnettersi e riconnettersi utilizzando tipi diversi di terminali, permettendo alle applicazioni di continuare senza percepire il cambio del terminale.
Finestre multiple
Possono essere create sessioni multiple, ognuna delle quali di solito ospita una singola applicazione. Le finestre sono numerate e l’utente può utilizzare la tastiera per passare da un’applicazione all’altra. Alcune GUI forniscono delle tab o qualche altra opzione simile per fornire questa caratteristica. Ogni finestra ha la sua scroll-back buffer, così è possibile vedere l’output anche quando la finestra non è attiva in quel momento e questo output può essere salvato anche quando si passa ad un altro computer. Le finestre possono essere ripartite in più screen tramite split screen. Mentre alcune applicazioni di testo hanno già questa funzionalità, Screen permette che ogni finestra sia divisa orizzontalmente in un numero qualsiasi di altre applicazioni.
Condivisione di sessione
Screen permette che più computer si connettano alla stessa sessione allo stesso tempo, permettendo così la collaborazione tra più utenti. Lo stesso computer può essere utilizzato per fare connessioni simultanee multiple, fornendo funzionalità alternative per la divisione della schermata, in particolare per i computer con più monitor.

Insomma una gran comodita’, un tool sicuramente utile da usare in tante diverse situazioni….!