Come utilizzare il comando dello schermo di Linux

Pubblicato: 2022-01-29
Un terminale Linux su un laptop con altre sessioni di terminale sovrapposte dietro.
fatmawati achmad zaenuri/Shutterstock

Con il comando screen di Linux, puoi spostare in background le applicazioni del terminale in esecuzione e spostarle in avanti quando vuoi vederle. Supporta anche display a schermo diviso e funziona su connessioni SSH, anche dopo la disconnessione e la riconnessione!

CORRELATI: 10 comandi Linux di base per principianti

Qual è il comando dello schermo?

Il comando screen è un multiplexer di terminale ed è assolutamente ricco di opzioni. Dire che può fare molto è il nonno degli eufemismi. La pagina man arriva a oltre 4.100 righe.

I seguenti sono i casi più comuni in cui useresti il ​​comando dello screen e li tratteremo ulteriormente in questo articolo:

  • L'operazione standard consiste nel creare una nuova finestra con una shell al suo interno, eseguire un comando e quindi spostare la finestra in background (denominato "staccare"). Quando vuoi vedere come sta andando il tuo processo, puoi riportare la finestra in primo piano ("ricollega") e usarla di nuovo. Questo è ottimo per lunghi processi che non vuoi terminare accidentalmente chiudendo la finestra del terminale.
  • Una volta che hai una sessione screen in esecuzione, puoi creare nuove finestre ed eseguire altri processi in esse. Puoi facilmente passare da una finestra all'altra per monitorarne l'avanzamento. Puoi anche dividere la finestra del terminale in regioni verticali o orizzontali e visualizzare le varie finestre screen in un'unica finestra.
  • È possibile connettersi a una macchina remota, avviare una sessione screen e avviare un processo. Puoi disconnetterti dall'host remoto, riconnetterti e il tuo processo sarà ancora in esecuzione.
  • Puoi condividere una sessione screen tra due diverse connessioni SSH in modo che due persone possano vedere la stessa cosa, in tempo reale.

Schermata di installazione

Per installare screen su Ubuntu, usa questo comando:

 sudo apt-get schermata di installazione 

Per installare screen su Manjaro, utilizzare il seguente comando:

 sudo pacman -Schermo Sy 

Su Fedora, digiti quanto segue:

 schermata di installazione sudo dnf 

Guida introduttiva allo schermo

Per avviare screen , digita semplicemente come mostrato di seguito e premi Invio:

 schermo 

Vedrai una pagina di informazioni sulla licenza. Puoi premere la barra spaziatrice per leggere la seconda pagina o Invio per tornare al prompt dei comandi.

Annuncio pubblicitario

Rimani al prompt dei comandi e sembra che non sia successo nulla. Tuttavia, ora stai eseguendo una shell all'interno di un emulatore di terminale multiplex. Perché questa è una cosa buona? Bene, iniziamo un processo che richiederà molto tempo per essere completato. Scaricheremo il codice sorgente per l'ultimo kernel Linux e lo reindirizzeremo in un file chiamato latest_kernel.zip .

Per fare ciò, digitiamo quanto segue:

 curl https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.5.9.tar.xz > latest_kernel.zip 

Il nostro download inizia e l'output di curl ci mostra lo stato di avanzamento.

Non possiamo mostrarti un'immagine del bit successivo, perché è una sequenza di tasti. Si digita Ctrl+A, si rilasciano quei tasti e quindi si preme d per staccare lo schermo.

Il processo di download è ancora in esecuzione ma la finestra che mostra il download è stata rimossa. Si torna alla finestra del terminale da cui è stata avviata la sessione dello screen . Un messaggio ti dice che una finestra screen etichettata 23167.pts-0.howtogeek è stata staccata.

È necessario il numero dall'inizio del nome della finestra per ricollegarlo. Se lo dimentichi, puoi sempre usare l'opzione -ls (list), come mostrato di seguito, per ottenere un elenco delle finestre separate:

 schermo -ls 

Quando sei pronto, puoi usare l'opzione -r (ricollega) e il numero della sessione per ricollegarlo, in questo modo:

 schermo -r 23167 

Annuncio pubblicitario

La finestra che ha funzionato in background viene ora riportata nella finestra del terminale come se non fosse mai uscita.

Una sessione dello schermo ricollegata ripristinata nella finestra del terminale.

Se è un processo che sta per correre fino alla sua conclusione, alla fine verrà completato. Se è un processo continuo, alla fine vorrai interromperlo. In ogni caso, al termine del processo, puoi digitare exit per uscire dallo screen . In alternativa, puoi premere Ctrl+A e poi K per chiudere forzatamente una finestra.

Digita il seguente comando:

 Uscita 

Torni alla finestra del terminale precedente, che mostrerà ancora il comando che hai usato per ricollegare la finestra. Poiché abbiamo chiuso la nostra unica finestra staccata, riceviamo un messaggio che screen sta terminando.

CORRELATI: Come utilizzare curl per scaricare file dalla riga di comando di Linux

Utilizzo di sessioni dello schermo con nome

È possibile utilizzare l'opzione -S (nome della sessione) per assegnare un nome alla sessione screen . Se utilizzi un nome memorabile anziché l'identità numerica della sessione, è più conveniente riconnettersi a una sessione. Digitiamo quanto segue per denominare la nostra sessione "bigfile":

 schermo -S file grande 

Quando screen avvia la nostra sessione, vediamo una finestra vuota con un prompt dei comandi. Stiamo per scaricare un file di grandi dimensioni, quindi possiamo usare un processo di lunga durata come esempio.

Digitiamo quanto segue:

 curl http://ipv4.download.thinkbroadband.com/1GB.zip > bigfile.zip 

All'avvio del download, premiamo Ctrl+A, quindi premiamo D per scollegare la sessione. Digitiamo quanto segue per utilizzare l'opzione -ls (list) con screen per vedere i dettagli della nostra sessione separata:

 schermo -ls 

Annuncio pubblicitario

Dietro l'identificatore numerico (23266), vediamo il nome della nostra sessione (bigfile). Digitiamo quanto segue, incluso il nome della sessione, per ricollegarlo:

 screen -r file grande 

Ci siamo riconnessi alla nostra finestra di download e vediamo che il download lungo è ancora in corso.

Al termine del download, digitiamo exit per chiudere la finestra della sessione.

Utilizzo dello schermo con più finestre

Finora, abbiamo utilizzato lo screen per posizionare un singolo processo in background in una finestra separata. Tuttavia, screen è in grado di fare molto di più. Successivamente, eseguiremo alcuni processi che ci consentono di monitorare alcuni aspetti del nostro computer.

Digitiamo quanto segue per avviare una sessione dello schermo chiamata "monitor":

 schermo -S monitor 

Annuncio pubblicitario

Al prompt dei comandi nella nuova sessione della finestra, dmesg e utilizzeremo le opzioni -H (leggibile dall'uomo) e -w (attendi nuovi messaggi). Questo visualizzerà i messaggi del buffer del kernel; nuovi messaggi appariranno non appena si verificano.

Digitiamo quanto segue:

 dmesg -H -w 

Vengono visualizzati i messaggi esistenti. Non torniamo al prompt dei comandi perché dmseg è in attesa di nuovi messaggi e li visualizzerà non appena arrivano.

CORRELATI: Come utilizzare il comando dmesg su Linux

Vogliamo eseguire un'altra applicazione, quindi abbiamo bisogno di una nuova finestra screen . Premiamo Ctrl+A, quindi C per creare una nuova finestra. Useremo watch per eseguire ripetutamente vmstat , in modo da ottenere una visualizzazione aggiornata frequentemente dell'utilizzo della memoria virtuale sul nostro computer.

Al nuovo prompt dei comandi, digitiamo quanto segue:

 guarda vmstat 

L'output di vmstat appare e si aggiorna ogni due secondi.

I nostri due processi sono ora in esecuzione. Per passare da una finestra dello screen all'altra, premi Ctrl+A e il numero della finestra. La prima che abbiamo creato è la finestra zero (0), la successiva è la finestra 1 e così via. Per passare alla prima finestra (quella dmesg ), premiamo Ctrl+A e 0.

Se premiamo Ctrl+A e 1, torniamo alla finestra di vmstat .

È piuttosto elegante! Possiamo premere Ctrl+A, e poi D per staccarci da questa sessione; possiamo riattaccare più tardi. Entrambe le sessioni saranno ancora in corso. Ancora una volta, per passare da una finestra all'altra, premiamo Ctrl+A e il numero (0 o 1) della finestra a cui vogliamo passare.

Andiamo al passaggio successivo e visualizziamo entrambe le schermate in un'unica finestra. Quando lo fai, allungherai la finestra del terminale a una dimensione che renda utile questo passaggio. I nostri esempi sono vincolati alle dimensioni dei nostri screenshot, quindi le nostre finestre sembreranno un po' anguste.

Annuncio pubblicitario

Per fare ciò, premiamo Ctrl+A, quindi Maiusc+S (è richiesta una "S" maiuscola).

La finestra si divide in due "regioni".

L'area superiore visualizza ancora vmstat e l'area inferiore è vuota. Il cursore è evidenziato nello screenshot qui sotto. Per spostarlo nella regione inferiore, premiamo Ctrl+A, quindi Tab.

Il cursore si sposta nella regione inferiore, che in realtà è solo uno spazio vuoto. Non è una shell, quindi non possiamo digitare nulla al suo interno. Per ottenere una visualizzazione utile, premiamo Ctrl+A, quindi premiamo "0" per visualizzare la finestra dmesg in questa regione.

Questo ci dà entrambe le uscite live in una finestra divisa. Se premiamo Ctrl+A e D per staccare la finestra e poi la ricolleghiamo, perderemo la visualizzazione a riquadro diviso. Tuttavia, possiamo ripristinarlo con le seguenti scorciatoie da tastiera:

  • Ctrl+A, S: divide la finestra orizzontalmente.
  • Ctrl+A , Tab: Sposta nella regione inferiore.
  • Ctrl+A, 0: Visualizza lo zero della finestra nella regione inferiore.

Possiamo fare un ulteriore passo avanti. Ora divideremo il riquadro inferiore verticalmente e aggiungeremo un terzo processo al display. Con il cursore nella regione inferiore, premiamo Ctrl+A e C per creare una nuova finestra con una shell al suo interno. La regione inferiore mostra la nuova finestra e fornisce un prompt dei comandi.

Successivamente, eseguiamo il comando df per verificare l'utilizzo del file system:

 df 

Annuncio pubblicitario

Quando vediamo df in esecuzione, premiamo Ctrl+A e il carattere pipe (|) . Questo divide la regione inferiore verticalmente. Premiamo Ctrl+A e Tab per spostarci nella nuova regione. Successivamente, premiamo Ctrl+A e 0 per visualizzare la finestra dmesg .

Puoi anche spostarti da una regione all'altra e aggiungere più divisioni verticali o orizzontali. Ecco alcune combinazioni di tasti più utili:

  • Ctrl+A: salta avanti e indietro tra la regione attuale e quella precedente.
  • Ctrl+A, Q: chiude tutte le regioni tranne quella corrente.
  • Ctrl+A, X: chiude la regione corrente.

Utilizzo dello schermo su SSH

Con screen , puoi avviare una sessione della finestra, scollegarla in modo che sia ancora in esecuzione in background, disconnetterti o riconnetterti e ricollegare la sessione.

Effettuiamo una connessione SSH al nostro computer da uno diverso con il comando ssh . Dobbiamo fornire il nome dell'account con cui ci collegheremo e l'indirizzo del computer remoto.

Per il nostro esempio, digitiamo quanto segue:

 ssh [email protected] 

Dopo aver eseguito l'autenticazione sul computer remoto e aver effettuato l'accesso, digitiamo quanto segue per avviare una sessione screen chiamata "ssh-geek":

 schermo -S ssh-geek 

A scopo dimostrativo, verrà eseguito in top nella finestra dello screen , ma potresti avviare qualsiasi processo di lunga durata o infinito.

Digitiamo quanto segue:

 superiore 

Annuncio pubblicitario

Una volta che top è in esecuzione nella finestra, premiamo Ctrl+A, quindi D per staccare la finestra.

Siamo tornati alla finestra del terminale remoto originale.

L'utente è tornato alla finestra del terminale originale

Se digitiamo exit , come mostrato di seguito, si disconnette la sessione SSH e torniamo sul nostro computer locale:

 Uscita 

Digitiamo quanto segue per riconnetterci:

 ssh [email protected] 

Dopo esserci riconnessi e aver effettuato l'accesso, possiamo digitare quanto segue per ricollegare la sessione dello screen :

 schermo -r ssh-geek 

Ora siamo riconnessi alla nostra istanza ancora in esecuzione di top .

Questo è ottimo se vuoi avviare un processo su una macchina e poi riprendere da dove eri rimasto su un'altra.

CORRELATI: Come creare e installare chiavi SSH dalla shell di Linux

Condivisione di una sessione dello schermo

Puoi anche utilizzare una sessione screen per consentire a due persone di vedere e interagire con la stessa finestra. Diciamo che qualcuno che esegue Fedora sul suo computer vuole connettersi al nostro server Ubuntu.

Digiterebbe quanto segue:

 ssh [email protected] 

Dopo essersi connesso, avvia una sessione dello schermo chiamata "ssh-geek" utilizzando l'opzione -S (nome della sessione). Utilizza anche le opzioni -d (stacca) e -m (creazione forzata) per creare una nuova sessione screen che è già scollegata.

Digita quanto segue:

 schermo -d -m -S ssh-geek 

Annuncio pubblicitario

Digita quanto segue, usando l'opzione -x (modalità multischermo) per allegare la sessione:

 schermo -x ssh-geek 

Su un computer Manjaro, un'altra persona si connette al computer Ubuntu con le stesse credenziali dell'account, come mostrato di seguito:

 ssh [email protected] 

Una volta connessa, digita il comando screen e usa l'opzione -X (modalità multischermo) per partecipare alla stessa sessione della finestra, in questo modo:

 schermo -X ssh-geek 

Ora, qualsiasi cosa una persona scriva, l'altra la vedrà. Ad esempio, quando una persona emette il comando date, entrambi lo vedono mentre viene digitato, così come il suo output.

Entrambe le persone stanno ora condividendo una sessione screen in esecuzione su un computer Ubuntu remoto.


Per un software che ha visto la luce per la prima volta nel 1987, lo screen offre ancora una buona dose di produttività. Conoscerlo sarà tempo ben speso!

CORRELATI: 37 importanti comandi Linux che dovresti conoscere

CORRELATI: I migliori laptop Linux per sviluppatori e appassionati