In questa guida vedremo cos'è GNU Screen e l'utilizzo di base del comando Screen con esempi nei sistemi operativi Linux e Unix.
Cos'è GNU Screen?
Schermo GNU è un multiplexer di terminali (gestore di finestre). Come dice il nome, Screen esegue il multiplexing del terminale fisico tra più shell interattive, così possiamo eseguire attività diverse in ogni sessione del terminale.
Tutte le sessioni dello schermo eseguono i loro programmi in modo completamente indipendente. Pertanto, un programma o un processo in esecuzione all'interno di una sessione dello schermo continuerà a funzionare anche se la sessione viene chiusa o disconnessa accidentalmente.
Ad esempio, durante l'aggiornamento di Ubuntu server tramite SSH, il comando Screen continuerà a eseguire il processo di aggiornamento nel caso in cui la sessione SSH venga interrotta per qualsiasi motivo.
GNU Screen ci consente di creare facilmente più sessioni dello schermo, passare da una sessione all'altra, copiare il testo da una sessione all'altra, allegare o scollegare una sessione in qualsiasi momento e così via.
GNU Screen è uno degli importanti strumenti da riga di comando che ogni amministratore Linux dovrebbe imparare e utilizzare ovunque sia necessario.
Vediamo come gestire più sessioni di Terminale usando il comando Screen con esempi in Linux.
Installa GNU Screen in Linux
GNU Screen è disponibile nei repository predefiniti della maggior parte dei sistemi operativi Linux.
Per installare GNU Screen su Arch Linux, EndeavourOS, Manjaro Linux, esegui:
$ sudo pacman -S screen
Su Debian, Ubuntu, Linux Mint:
$ sudo apt-get install screen
Su Fedora, RHEL, CentOS. AlmaLinux, Rocky Linux:
$ sudo dnf install screen
Oppure,
$ sudo yum install screen
Su CentOS 8, Screen non è disponibile nei repository ufficiali. Quindi devi abilitare [EPEL]
repository e quindi installa la schermata.
$ sudo dnf install epel-release
$ sudo dnf install screen
Su SUSE/openSUSE:
$ sudo zypper install screen
Andiamo avanti e vediamo alcuni esempi di comandi su schermo.
Esempi di comandi a schermo
La scorciatoia predefinita del prefisso per tutti i comandi in Screen è Ctrl+a
. Devi usare molto questa scorciatoia quando usi Screen. Quindi, ricorda questa scorciatoia da tastiera.
Crea nuova sessione Screen
Creiamo una nuova sessione Screen e alleghiamoci. Per farlo, digita il seguente comando nel terminale:
screen
Ora, esegui qualsiasi programma o processo all'interno di questa sessione. Il processo o il programma in esecuzione continuerà a funzionare anche se sei disconnesso da questa sessione.
Esci dalle sessioni dello schermo
Per scollegarti dall'interno di una sessione dello schermo, premi Ctrl+a e d . Non è necessario premere entrambe le combinazioni di tasti contemporaneamente. Per prima cosa premi Ctrl+a e quindi premi d . Dopo esserti disconnesso da una sessione, vedrai un output simile a quello di seguito.
[detached from 29149.pts-0.sk]
Qui, 29149 è l'ID schermo e pts-0.sk è il nome della sessione dello schermo. Puoi allegare, scollegare e terminare le sessioni Screen utilizzando l'ID schermo o il nome della rispettiva sessione.
Crea una sessione denominata
Puoi anche creare una sessione dello schermo con qualsiasi nome personalizzato a tua scelta diverso dal nome utente predefinito come di seguito.
screen -S ostechnix
Il comando precedente creerà una nuova sessione dello schermo con il nome "xxxxx.otechnix" e allegalo subito. Per uscire dalla sessione corrente, premi Ctrl+a seguito da d .
La denominazione delle sessioni dello schermo può essere utile quando si desidera trovare quali processi sono in esecuzione su quali sessioni. Ad esempio, quando uno stack LAMP di configurazione all'interno di una sessione, puoi semplicemente nominarlo come di seguito.
screen -S lampstack
Crea sessioni separate
A volte, potresti voler creare una sessione, ma non allegarla automaticamente. In questi casi, esegui il comando seguente per creare una sessione separata denominata "senthil" :
screen -S senthil -d -m
Oppure, in breve:
screen -dmS senthil
Il comando precedente creerà una sessione chiamata "senthil", ma non si allegherà ad essa.
Elenca le sessioni dello schermo
Per elencare tutte le sessioni in esecuzione (collegate o scollegate), eseguire:
screen -ls
Esempio di output:
There are screens on: 29700.senthil (Detached) 29415.ostechnix (Detached) 29149.pts-0.sk (Detached) 3 Sockets in /run/screens/S-sk.
Come puoi vedere, ho tre sessioni in esecuzione e tutte sono staccate.
Se non c'erano sessioni dello schermo in esecuzione, otterrai un output come di seguito.
No Sockets found in /run/screen/S-sk.
Allega alle sessioni di Screen
Se vuoi collegarti a una sessione in qualsiasi momento, ad esempio 29415.otechnix , esegui semplicemente:
screen -r 29415.ostechnix
Oppure,
screen -r ostechnix
Oppure, usa semplicemente l'ID schermo:
screen -r 29415
Per verificare se siamo allegati alla suddetta sessione, è sufficiente elencare le sessioni aperte e verificare.
screen -ls
Esempio di output:
There are screens on: 29700.senthil (Detached) 29415.ostechnix (Attached) 29149.pts-0.sk (Detached) 3 Sockets in /run/screens/S-sk.
Come puoi vedere nell'output sopra, siamo attualmente collegati a 29415.otechnix sessione. Per uscire dalla sessione corrente, premere ctrl+a, d.
Crea sessioni nidificate
Quando eseguiamo il comando "schermo", creerà una singola sessione per noi. Possiamo, tuttavia, creare sessioni nidificate (una sessione all'interno di una sessione).
Innanzitutto, crea una nuova sessione o allega una sessione aperta. Creerò una nuova sessione denominata "nidificata".
screen -S nested
Ora premi Ctrl+a e c all'interno della sessione per creare un'altra sessione. Ripeti l'operazione per creare un numero qualsiasi di sessioni Screen nidificate. Ad ogni sessione sarà assegnato un numero. Il numero inizierà da 0 .
Puoi passare alla sessione successiva premendo Ctrl+n e passa alla precedente premendo Ctrl+p .
Ecco l'elenco delle scorciatoie da tastiera importanti per gestire le sessioni nidificate.
- Ctrl+a ” - Elenca tutte le sessioni
- Ctrl+a 0 - Passa alla sessione numero 0
- Ctrl+a n - Passa alla sessione successiva
- Ctrl+a p - Passa alla sessione precedente
- Ctrl+a S - Dividi la regione corrente orizzontalmente in due regioni
- Ctrl+a l - Dividi la regione corrente verticalmente in due regioni
- Ctrl+a Q - Chiudi tutte le sessioni tranne quella corrente
- Ctrl+a X - Chiudi la sessione corrente
- Ctrl+a \ - Termina tutte le sessioni e termina Screen
- Ctrl+a? - Mostra le associazioni di tasti. Per uscire, premi INVIO.
Blocca sessioni
Lo schermo ha un'opzione per bloccare una sessione dello schermo. Per farlo, premi Ctrl+a e x . Inserisci la tua password Linux per bloccare lo schermo.
Screen used by sk <sk> on ubuntuserver. Password:
Registrazione delle sessioni
Potresti voler registrare tutto quando sei in una sessione Screen. Per farlo, premi semplicemente Ctrl+a e H .
In alternativa, puoi abilitare la registrazione all'avvio di una nuova sessione utilizzando -L parametro.
screen -L
D'ora in poi, tutte le attività che hai svolto all'interno della sessione verranno registrate e archiviate in un file denominato screenlog.x nella tua directory $HOME. Qui, x è un numero.
Puoi visualizzare il contenuto del file di registro utilizzando cat comando o qualsiasi applicazione di visualizzazione di testo.
Lettura consigliata:
- Come registrare tutto ciò che fai nel terminale
Sessioni di avvio automatico dello schermo
L'avvio automatico delle sessioni dello schermo sarà di grande aiuto durante l'esecuzione di un processo di lunga durata tramite SSH. Se hai perso la connettività di rete per qualsiasi motivo, il processo continuerà a essere eseguito all'interno della sessione Screen nel sistema remoto e potrai ricollegarti ad esso quando la rete tornerà online. Per sapere come avviare automaticamente una schermata all'avvio del sistema, fare riferimento al seguente collegamento.
- Come avviare automaticamente la sessione dello schermo su Linux durante l'accesso
Verifica se sei una sessione Screen o meno
Come avrai notato, la sessione normale e la sessione dello schermo avranno esattamente lo stesso aspetto. Non vedrai alcuna indicazione ovvia se ti trovi all'interno della sessione Screen o della sessione normale. Per sapere se sei in sessione Screen o meno, segui i passaggi indicati nel link sottostante.
- Come verificare se sei in sessione schermo o meno in Linux
Sessioni Kill Screen
Se una sessione non è più richiesta, uccidila. Per terminare una sessione separata denominata "senthil":
screen -r senthil -X quit
Oppure,
screen -X -S senthil quit
Oppure,
screen -X -S 29415 quit
Se non ci sono sessioni aperte, vedrai il seguente output:
$ screen -ls No Sockets found in /run/screens/S-sk.
Per maggiori dettagli, fare riferimento alle pagine man.
$ man screen
Esiste anche un'utilità da riga di comando simile denominata "Tmux" che fa lo stesso lavoro di GNU Screen. Per saperne di più, fare riferimento alla seguente guida.
- Esempi di comando Tmux per gestire più sessioni di terminale