Skip to content
Skip to content
Menu
Info Cafe
Info Cafe

Come usare il comando schermo di Linux

By admin on Febbraio 23, 2021

  • Dave McKay

    @TheGurkha

  • March 27, 2020, 8:00am EDT
Un terminale Linux su un laptop con altre sessioni di terminale sovrapposte dietro di esso.
fatmawati achmad zaenuri/

Con il comando Linux screen, è possibile spingere le applicazioni del terminale in esecuzione sullo sfondo e tirarle avanti quando si vuole vederle. Supporta anche la visualizzazione a schermo diviso e funziona su connessioni SSH, anche dopo essersi disconnessi e riconnessi!

Cos’è il comando schermo?

Il comando screen è un multiplexer di terminale, ed è assolutamente pieno di opzioni. Dire che può fare molto è il nonno degli eufemismi. La pagina man supera le 4.100 righe.

Questi sono i casi più comuni in cui si usa il comando screen, e li tratteremo ulteriormente in questo articolo:

  • L’operazione standard è quella di creare una nuova finestra con una shell in essa, eseguire un comando, e poi spingere la finestra sullo sfondo (chiamato “distacco”). Quando volete vedere come sta andando il vostro processo, potete tirare di nuovo la finestra in primo piano (“riattaccare”) e usarla di nuovo. Questo è ottimo per processi lunghi 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. Si può facilmente passare da una finestra all’altra per monitorare i loro progressi. Si può anche dividere la finestra del terminale in regioni verticali o orizzontali, e visualizzare le varie screen finestre in una finestra.
  • È possibile connettersi a una macchina remota, avviare una sessione screen e lanciare 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 così due persone possono vedere la stessa cosa, in tempo reale.

Installazione di screen

Per installare screen su ubuntu, usate questo comando:

sudo apt-get install screen

Il comando "sudo apt-get install screen" in una finestra di terminale."sudo apt-get install screen" command in a terminal window.

Per installare screen su Manjaro, utilizzare il seguente comando:

sudo pacman -Sy screen

Il comando "sudo pacman -Sy screen" in una finestra del terminale."sudo pacman -Sy screen" command in a terminal window.

Su Fedora, si digita quanto segue:

sudo dnf install screen

Il comando "sudo dnf install screen" in una finestra del terminale."sudo dnf install screen" command in a terminal window.

Iniziare con screen

Per iniziare screen, basta digitare come mostrato di seguito e premere Invio:

screen

Il comando "screen" in una finestra del terminale."screen" command in a terminal window.

Pubblicità

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.

Il comando "screen" informazioni sulla licenza in una finestra del terminale."screen" command license information in a terminal window.

Sei rimasto al prompt dei comandi, e non sembra essere successo molto. Tuttavia, ora state eseguendo una shell all’interno di un emulatore di terminale multiplo. Perché questa è una buona cosa? Beh, iniziamo un processo che richiederà molto tempo per essere completato. Scaricheremo il codice sorgente dell’ultimo kernel Linux e lo reindirizzeremo in un file chiamato latest_kernel.zip.

Per farlo, digitiamo quanto segue:

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

il comando "curl latest_kernel.zip" in una finestra del terminale."curl https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.5.9.tar.xz > latest_kernel.zip" command in a terminal window.

Il nostro download inizia, e l’output curl ci mostra il progresso.

L

Pubblicità

Non possiamo mostrarvi un’immagine del prossimo pezzo, perché è una sequenza di tasti. Si digita Ctrl+A, si rilasciano quei tasti, e poi si preme d per staccare lo schermo.

Il processo di download è ancora in corso ma la finestra che mostra il download viene rimossa. Sei tornato alla finestra del terminale da cui hai lanciato la sessione screen. Un messaggio vi dice che una finestra screen etichettata 23167.pts-0.howtogeek è stata staccata.

Avete bisogno del numero dall’inizio del nome della finestra per riattaccarla. Se lo dimenticate, potete sempre usare l’opzione -ls (elenco), come mostrato qui sotto, per ottenere un elenco delle finestre staccate:

screen -ls

Il comando "screen -ls" in una finestra di terminale."screen -ls" command in a terminal window.

Quando sei pronto, puoi usare l’opzione -r (reattach) e il numero della sessione per riattaccarla, così:

screen -r 23167

Il comando "screen -3 23167" in una finestra del terminale."screen -3 23167" command in a terminal window.

Pubblicità

La finestra che ha lavorato in background è ora riportata alla finestra del terminale come se non fosse mai uscita.

Una sessione di schermo riattaccata ripristinata alla finestra del terminale.

Se è un processo che sta andando avanti fino alla sua conclusione alla fine si completerà. Se è un processo continuo, alla fine vorrai terminarlo. In entrambi i casi, quando il processo finisce, potete digitare exit per uscire dal screen. In alternativa, si può premere Ctrl+A, e poi K per uccidere forzatamente una finestra.

Digitare il seguente comando:

exit

Il comando "exit" in una finestra del terminale."exit" command in a terminal window.

Si ritorna alla precedente finestra del terminale, che mostrerà ancora il comando usato per riattaccare la finestra. Poiché abbiamo chiuso la nostra unica finestra staccata, otteniamo un messaggio che screen sta terminando.

Il messaggio di fine comando "screen" in una finestra del terminale."screen" command terminating message in a terminal window.

RELATO: Come usare curl per scaricare file dalla riga di comando di Linux

Usare sessioni di schermo con nome

Puoi usare l’opzione -S (nome della sessione) per dare un nome alla tua sessione screen. Se si usa un nome memorabile piuttosto che l’identità numerica della sessione, è più conveniente riconnettersi a una sessione. Digitiamo quanto segue per nominare la nostra sessione “bigfile”:

screen -S bigfile

il comando "screen -S bigfile" in una finestra di terminale."screen -S bigfile" command in a terminal window.

Pubblicità

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

Scriviamo quanto segue:

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

il comando "curl bigfile.zip" in una finestra di terminale."curl http://ipv4.download.thinkbroadband.com/1GB.zip > bigfile.zip" command in a terminal window.

Quando il download inizia, premiamo Ctrl+A, e poi premiamo D per staccare la sessione. Digitiamo quanto segue per usare l’opzione -ls (lista) con screen per vedere i dettagli della nostra sessione staccata:

screen -ls

il comando "screen -ls" in una finestra del terminale."screen -ls" command in a terminal window.

Dietro l’identificatore numerico (23266), vediamo il nome della nostra sessione (bigfile). Digitiamo quanto segue, compreso il nome della sessione, per riattaccarla:

screen -r bigfile

Il comando "screen -r bigfile" in una finestra del terminale."screen -r bigfile" command in a terminal window.

Siamo ricollegati alla nostra finestra di download e vediamo che il lungo download è ancora in corso.

L'output del download in una sessione di schermo riattaccato in una finestra di terminale.

Pubblicità

Quando il download è completo, digitiamo exit per chiudere la finestra della sessione.

Usare lo schermo con più finestre

Finora abbiamo usato screen per mettere un singolo processo in background in una finestra staccata. Tuttavia, screen è in grado di fare molto di più. Successivamente, eseguiremo alcuni processi che ci permettono di monitorare alcuni aspetti del nostro computer.

Scriviamo quanto segue per avviare una sessione di schermo chiamata “monitor”:

screen -S monitor

Il comando "screen -S monitor" in una finestra del terminale."screen -S monitor" command in a terminal window.

Al prompt dei comandi nella nostra nuova finestra di sessione, lanceremo dmesg e useremo le opzioni -H (leggibile dall’uomo) e -w (aspetta nuovi messaggi). Questo visualizzerà i messaggi del buffer del kernel; i nuovi messaggi appariranno man mano che si presentano.

Scriviamo quanto segue:

dmesg -H -w

il comando "dmesg -H -w" in una finestra di terminale."dmesg -H -w" command in a terminal window.

Pubblicità

I messaggi esistenti appaiono. Non veniamo riportati al prompt dei comandi perché dmseg è in attesa di nuovi messaggi, e li mostrerà man mano che arrivano.

L

RELATO: Come usare il comando dmesg su Linux

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

Al nuovo prompt dei comandi, digitiamo quanto segue:

watch vmstat

il comando "watch vmstat" in una finestra del terminale."watch vmstat" command in a terminal window.

L’output vmstat appare e si aggiorna ogni due secondi.

L

I nostri due processi sono ora in esecuzione. Per passare da una finestra all’altra screen, si preme 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), si preme Ctrl+A e 0.

Ritorno alla schermata "dmesg" in una finestra del terminale."dmesg" screen in a terminal window.

Se premiamo Ctrl+A e 1, ci riporta alla vmstat finestra.

Ritorno alla schermata "vmstat" in una finestra del terminale."vmstat" screen in a terminal window.

Pubblicità

Questo è piuttosto ingegnoso! Possiamo premere Ctrl+A, e poi D per staccarci da questa sessione; possiamo riattaccarci più tardi. Entrambe le sessioni saranno ancora in esecuzione. Di nuovo, per passare da una finestra all’altra, premiamo Ctrl+A e il numero (0 o 1) della finestra a cui vogliamo passare.

Passiamo al passo successivo e visualizziamo entrambe le schermate in una finestra. Quando fai questo, allungherai la finestra del tuo terminale ad una dimensione che rende utile questo passo. I nostri esempi sono limitati alle dimensioni dei nostri screenshot, quindi le nostre finestre sembreranno un po’ strette.

Per fare questo, premiamo Ctrl+A, e poi Shift+S (la “S” maiuscola è necessaria).

La finestra si divide in due “regioni.”

Una sessione di finestre "schermo" si divide in due regioni orizzontali in una finestra del terminale."screen" window session split into two horizontal regions in a terminal window.

La regione superiore mostra ancora vmstat, e la regione inferiore è vuota. Il cursore è evidenziato nello screenshot qui sotto. Per spostarlo nella regione inferiore, premiamo Ctrl+A, e poi Tab.

Una sessione di finestre "schermo" divisa in due regioni orizzontali con cursore nella regione inferiore in una finestra di terminale."screen" window session split into two horizontal regions with cursor in the bottom region in a terminal window.

Pubblicità

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

La sessione "schermo" con un pannello orizzontale diviso che mostra un processo diverso in ogni regione in una finestra di terminale."screen" session with a horizontal split pane showing a different process in each region in a terminal window.

Questo ci dà entrambi gli output live in una finestra divisa. Se premiamo Ctrl+A e D per staccare la finestra, e poi la riattacchiamo, perderemo la vista split-pane. Tuttavia, possiamo ripristinarla con le seguenti scorciatoie da tastiera:

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

Possiamo fare un ulteriore passo avanti. Ora divideremo il pannello inferiore verticalmente, e aggiungeremo un terzo processo alla visualizzazione. 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 visualizza la nuova finestra e ci dà un prompt dei comandi.

Una sessione di "schermo" con un riquadro orizzontale diviso che mostra una nuova finestra nella regione inferiore in una finestra di terminale."screen" session with a horizontal split pane showing a new window in the lower region in a terminal window.

Prossimo, eseguiamo il comando df per controllare l’uso del file system:

df

Una sessione "schermo" con un pannello orizzontale diviso, e "df" digitato nella regione inferiore in una finestra del terminale."screen" session with a horizontal split pane, and "df" typed in the lower region in a terminal window.

Pubblicità

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

Una sessione "a schermo" che mostra tre riquadri in una finestra del terminale."screen" session showing three panes in a terminal window.

Si può anche passare da una regione all’altra, e aggiungere altre suddivisioni verticali o orizzontali. Ecco alcune combinazioni di tasti più utili:

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

Utilizzare lo schermo su SSH

Con screen, è possibile avviare una sessione in finestra, staccarla in modo che sia ancora in esecuzione in background, disconnettersi o rientrare, e riattaccare la sessione.

Facciamo una connessione SSH al nostro computer da un altro con il comando ssh. Dobbiamo fornire il nome dell’account con cui ci connetteremo e l’indirizzo del computer remoto.

Per il nostro esempio, digitiamo quanto segue:

ssh [email protected]

il comando "ssh dave@192.168.4.30" in una finestra del terminale."ssh dave@192.168.4.30" command in a terminal window.

Pubblicità

Dopo esserci autenticati sul computer remoto e aver fatto il login, digitiamo quanto segue per avviare una sessione screen chiamata “ssh-geek”:

screen -S ssh-geek

Il comando "screen -S ssh-geek" in una finestra di terminale."screen -S ssh-geek" command in a terminal window.

A scopo dimostrativo, eseguiremo top nella finestra screen, ma si può avviare qualsiasi processo di lunga durata o senza fine.

Scriviamo quanto segue:

top

il comando "top" in una finestra del terminale."top" command in a terminal window.

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

Il processo "top" in esecuzione in una finestra "schermo" in una finestra di terminale."top" process running in a "screen" window in a terminal window.

Siamo tornati alla finestra originale del terminale remoto.

L'utente è tornato alla sua finestra di terminale originale

Se digitiamo exit, come mostrato sotto, si disconnette la sessione SSH e siamo di nuovo sul nostro computer locale:

exit

Il comando "exit" in una finestra di terminale."exit" command in a terminal window.

Digitiamo quanto segue per riconnetterci:

ssh [email protected]

Il comando "ssh dave@192.168.4.30" in una finestra del terminale."ssh dave@192.168.4.30" command in a terminal window.

Pubblicità

Dopo esserci riconnessi e aver fatto il login, possiamo digitare quanto segue per riattaccare la screen sessione:

screen -r ssh-geek

il comando "screen -r ssh-geek" in una finestra di terminale."screen -r ssh-geek" command in a terminal window.

Siamo ora ricollegati alla nostra istanza ancora in esecuzione di top.

Il processo "top" in esecuzione in una finestra di terminale."top" process running in a terminal window.

Questo è ottimo se vuoi iniziare un processo su una macchina, e poi riprendere da dove hai lasciato su un’altra.

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

Condividere una sessione dello schermo

Puoi anche usare una sessione screen per permettere a due persone di vedere e interagire con la stessa finestra. Supponiamo che qualcuno con Fedora sul suo computer voglia connettersi al nostro server Ubuntu.

Dovrebbe digitare quanto segue:

ssh [email protected]

il comando "ssh dave@192.168.4.30" in una finestra del terminale."ssh dave@192.168.4.30" command in a terminal window.

Dopo che si è connesso, inizia una sessione a schermo chiamata “ssh-geek” usando l’opzione -S (nome della sessione). Usa anche le opzioni -d (distacco) e -m (creazione forzata) per creare una nuova sessione screen già distaccata.

Si digita quanto segue:

screen -d -m -S ssh-geek

il comando "screen -d -m -S ssh-geek" in una finestra del terminale."screen -d -m -S ssh-geek" command in a terminal window.

Pubblicità

Digita quanto segue, usando l’opzione -X (modalità multischermo) per collegare la sessione:

screen -X ssh-geek

Il comando "screen -X ssh-geek" in una finestra del terminale."screen -X ssh-geek" command in a terminal window.

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

ssh [email protected]

Il comando "ssh dave@192.168.4.1" in una finestra di terminale."ssh dave@192.168.4.1" command in a terminal window.

Una volta connessa, digita il comando screen e usa l’opzione -X (modalità multischermo) per unirsi alla stessa sessione in finestra, così:

screen -X ssh-geek

Il comando "screen -X ssh-geek" in una finestra terminale."screen -X ssh-geek" command in a terminal window.

Ora, qualsiasi cosa una delle due persone digiti, l’altra la vedrà. Per esempio, quando una persona emette il comando “date”, entrambi lo vedono mentre viene digitato, così come il suo output.

Il comando "date" in una finestra del terminale."date" command in a terminal window.

Output dal comando "date" in una finestra del terminale."date" command in a terminal window.

Pubblicità

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

Per essere un software che ha visto la luce per la prima volta nel 1987, screen ha ancora una buona produttività. Familiarizzare con esso sarà tempo ben speso!

RELATO: 37 Comandi Linux importanti da conoscere

Dave McKay
Dave McKay ha usato i computer per la prima volta quando il nastro di carta perforato era in voga, e da allora ha sempre programmato. Dopo oltre 30 anni nell’industria IT, ora è un giornalista tecnologico a tempo pieno. Durante la sua carriera, ha lavorato come programmatore freelance, come manager di un team internazionale di sviluppo software, come project manager di servizi IT e, più recentemente, come Data Protection Officer. Dave è un evangelista di Linux e un sostenitore dell’open source.Read Full Bio ”

Navigazione articoli

Perché i miei integratori mi danno la nausea?
Ostriche al forno

Lascia un commento Annulla risposta

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Articoli recenti

  • Firebush (Italiano)
  • Previsione dei tassi CD per il 2021: I tassi rimarranno probabilmente bassi, ma potrebbero aumentare nel corso dell’anno
  • Come strutturare la documentazione del sistema di gestione della qualità
  • Dolore pelvico cronico e prostatite: sintomi, diagnosi e trattamento
  • Mixed Berry Crisp (Italiano)
  • Ricetta budino al cioccolato basso -carb
  • Giochi e attività salutari per i bambini | UIC Online Informatics
  • Wheat Ales (American) (Italiano)
  • I benefici dell’allattamento al seno dopo un anno
  • È sicuro buttare i fondi di caffè nel lavandino | Atomic Plumbing

Meta

  • Accedi
  • Feed dei contenuti
  • Feed dei commenti
  • WordPress.org

Archivi

  • Marzo 2021
  • Febbraio 2021
  • Gennaio 2021
  • Dicembre 2020
  • DeutschDeutsch
  • NederlandsNederlands
  • EspañolEspañol
  • FrançaisFrançais
  • PortuguêsPortuguês
  • ItalianoItaliano
  • PolskiPolski
  • 日本語日本語
©2021 Info Cafe | WordPress Theme by SuperbThemes.com