Come usare il comando screen

Ti è mai capitato di avviare un processo lungo sul server e poi perdere tutto solo perché ti sei disconnesso per errore o per un timeout del terminale? O magari volevi lanciare un processo sul tuo server e lasciarlo in esecuzione anche dopo aver chiuso il terminale? Ecco, il comando screen è ciò che ti serve per risolvere questi problemi!
In questo articolo vedrai in modo semplice e pratico cos’è screen, come si usa, e perché – una volta provato – non potrai più farne a meno. Sei pronto a scoprirlo?
- Leggi l'articolo, ti bastano solo 7 minuti, 6 secondi
Sei di fretta? Scarica il PDF e consultalo quando vuoi!
Sommario
Cos’è il comando screen
Il comando screen è un tool da terminale (disponibile su sistemi operativi Unix-like) che ti permette di creare sessioni “virtuali” persistenti.
In pratica, puoi avviare un processo, disconnetterti tranquillamente, e poi tornare più tardi riprendendo da dove eri rimasto o addirittura da un altro terminale.
Bellissimo, no?
Come si usa screen
Per iniziare ti basta scrivere:
screen
Tutto qui? Beh si, sei dentro una nuova sessione. A prima vista sembra il solito terminale, ma in realtà è una “finestra” separata dal tuo normale terminale, che funziona in modo indipendente dal tuo terminale e dal tuo pc.
Per uscire senza chiudere la sessione, premi:
Ctrl + A, poi D
La D sta per “detach”, cioè ti stacchi dalla sessione.
Ora puoi anche chiudere il terminale: la sessione screen e tutto ciò che è in essa in esecuzione resta viva sul server!
Come rientrare in una sessione screen
Per vedere tutte le sessioni attive, è sufficiente digitare:
screen -ls
che restituisce l’elenco delle sessioni screen attive, ad esempio:
There is a screen on:
12345.pts-0.server-name (Detached)
dove 12345 è l’ID della sessione in screen sul server “server-name”, in status “Detached”.
Ma cosa sta facendo questa sessione? Cosa c’è in esecuzione in essa?
Per saperlo, è sufficiente rientrare:
screen -r 12345
E sei di nuovo dove avevi lasciato tutto, come se niente fosse successo. Wow!
Esempio pratico: avviare uno script che dura ore
Ma a cosa potrebbe servire il comando screen in concreto?
Immagina di avere uno script che fa un backup che procede lentamente e richiede ore:
bash backup.sh
Ipotizza di aver lanciato il comando ma… si è fatta ora di andare via! Sei costretto ad attendere la fine del processo, oppure ad interromperlo e riavviarlo successivamente, quando avrai più tempo.
Con screen questo non sarebbe successo!
Invece di lasciarlo andare nel terminale normale (rischiando di interromperlo), puoi:
- Avviare screen:
screen - Lanciare il comando:
bash backup.sh - Fare: Ctrl + A poi D/li>
- Spegnere il PC, andare a pranzo, vivere la vita
- Tornare all’esecuzione:
screen -re vedere com’è andata
Bello no?
Chiudere una sessione screen
Una volta che l’esecuzione è terminata, hai verificato ciò che volevi, puoi chiudere il tuo screen. Per farlo:
- Rientra nella sessione con
screen -r - Esci digitando
exit - Oppure chiudi il terminale con Ctrl + D
In questo modo la sessione sarà terminata definitivamente. Per controllare, puoi eseguire:
screen -ls
e non troverai più l’ID della sessione (nel nostro esempio: 12345)
Qualche trucchetto in più
NOME SCREEN
Per semplificare ancora di più le cose, puoi anche dare un nome “parlante” alle tue sessioni screen, ad esempio nell’esempio che abbiamo usato, un nome potrebbe essere “Esecuzione backup”. Per dare un nome alla sessione screen, è sufficiente dichiararlo usando il parametro “-S” quando avvi la sessione:
screen -S "Esecuzione backup"
A questo punto, puoi fare il restore della sessione usando o l’ID (come visto in precedenza) oppure il nome:
screen -r "Esecuzione backup"
CHIUDI TUTTI GLI SCREEN
Se invece desideri chiudere in un colpo solo tutti gli screen aperti:
screen -X -S ID quit
Ovviamente prima di farlo, assicurati che tutti gli screen abbiamo terminato le esecuzioni al loro interno per non perdere nulla!
Documentazione e link utili
Ma non finisce qui! screen dispone di altre opzioni per darti ancora più possibilità e flessibilità, se volessi approfondire dai un’occhiata alla documentazione ufficiale digitando:
screen --help
Ecco infine qualche link utile se desideri approfondire gli argomenti di cui abbiamo parlato:
Conclusioni
Ti è piaciuto il comando screen? È perfetto per chi lavora su server da remoto (via SSH), per chi esegue processi lunghi (magari da portatile) e non vuole perdere nulla, per chi ama avere il controllo e la flessibilità nel terminale, mantenendolo ordinato e pulito, per chi vuole condividere sessioni di processi e così via…
Cosa aspetti ad usarlo? Facci sapere cosa ne pensi!