Mettere un programma in background con “screen”
Attenzione
Questo articolo è stato pubblicato più di un anno fa, potrebbero esserci stati sviluppi.
Ti preghiamo di tenerne conto.
Oggi parliamo di screen
: una piccola utility a riga di comando per sistemi Linux.
Screen, molto semplicemente, è in grado di moltiplicare i terminali a nostra disposizione, di sganciare un terminale dal proprio processo e di mantenere il processo attivo in background (restituendoci il terminale da utilizzare).
Screen è particolarmente utile quando si lancia un comando che prevede un tempo di risposta piuttosto lungo (ad esempio un backup) sia esso lanciato in locale o su un server remoto. Il timeout del server o il kill involontario da parte dell’utente potrebbe provocare l’interruzione del comando e vanificare il tempo speso.
Ma vediamo come funziona:
screen | avvia screen e restituisce la shell |
screen + comando | avvia il programma “comando” all’interno di “screen” |
Una volta avviato “screen “ | |
“ctrl+a ” e poi “c “ | crea un nuovo terminale |
“ctrl+a ” e poi “n “ | passa al terminale seguente |
“ctrl+a ” e poi “p “ | passa al terminale precedente |
“ctrl+a ” e poi “d “ | “sgancia” screen dalla sessione |
Una volta sganciati dalla sessione possiamo terminare il tunnelling SSH o chiudere il terminale. Il programma continuerà ad essere eseguito in background.
Per recuperare una sessione precedente occorrerà “riagganciarsi”:
screen -list | elenca tutte le sessioni avviate |
screen -r | recupera una sessione avviata in precedenza |
Qui sotto uno esempio del terminale con due sessioni “sganciate” di screen.
~$ screen -d
There are screens on:
16268.pts-3.joe-desktop (01/12/2019 20:58:09) (Detached)
23799.pts-4.joe-desktop (01/12/2019 16:30:08) (Detached)
There is no screen to be detached.
~$
Per “riagganciarsi” a una sessione specifica basterà specificare il PID. Nel nostro caso “screen -r 16268
“.
Per cancellare uno screen questo è il comando: screen -X -S {PID della sessione} kill
.
0 commenti