Come utilizzare il comando screen di Linux su SSH in remoto
Quando usi il comando ssh, ti dà solo una schermata (terminale). Se perdi quella schermata, perderai tutto ciò che stavi facendo sul computer remoto. A volte succede quando un problema di rete interrompe la connessione ssh e perdi ciò che stavi facendo e devi riconnetterti nuovamente al server remoto. Questo può essere molto brutto se sei nel mezzo di qualcosa di importante. Ad esempio, se vuoi fare tre cose contemporaneamente, come “vi httpd.conf”, “tail -f /var/log/messages” e “service httpd reload”, devi aprire tre sessioni ssh separate.
L’utilità dello schermo GNU è un multiplexer di terminale. Se sei un amministratore di sistema che lavora su server remoti, screen è un ottimo strumento per gestire un computer remoto con solo un’interfaccia a riga di comando disponibile. Ti consente di disconnetterti e quindi accedere nuovamente alla stessa sessione dello schermo in un secondo momento.
È installato per impostazione predefinita in Ubuntu, per il sistema basato su RHEL è possibile installare lo schermo utilizzando il comando yum
# yum install screen
Per utilizzare lo schermo, immetti il seguente comando:
$ screen
Potresti vedere un messaggio di benvenuto se è lì e poi vedere un normale prompt di bash nella finestra. Per controllare lo schermo, premere il tasto Ctrl+a
combinazione di tasti, seguita da un’altra sequenza di tasti.
Per esempio, Ctrl+a
seguito da ?
(indicato come Ctrl+a, ?) visualizza la schermata della guida.
Di seguito sono riportati alcuni comandi e tasti di controllo che è possibile utilizzare per azionare lo schermo.
Tasti di controllo dello schermo
$ screen -ls There is a screen on: 7089.pts-1.server10 (Attached) 1 Socket in /var/run/screen/S-francois. Change window title $ Ctrl+a, a Set window's title to: My Server10 Create a new window $ Ctrl+a, c Show active window titles $ Ctrl+a, " Num Name Flags 0 My Server Up/down arrows change windows 1 bash Detach screen from terminal
$ Ctrl+a, d
La sessione dello schermo mostrata sopra ha portato alla creazione di due finestre (ciascuna con una shell bash). Puoi crearne quanti ne vuoi e nominarli come preferisci. Inoltre, invece di staccarti dalla sessione dello schermo, potresti semplicemente chiuderla uscendo dalla shell in ogni finestra aperta (digita exit o Ctrl+d).
Riconnessione a una sessione dello schermo
Quando la sessione dello schermo viene scollegata, tornerai alla shell che era aperta quando ti sei connesso per la prima volta al server. Puoi tornare a quella schermata in un secondo momento (anche dopo esserti disconnesso e disconnesso dal server). Per riconnettersi quando la schermata singola è in esecuzione, inserire quanto segue:
$ screen -r
Se sono in esecuzione più sessioni dello schermo, screen -r
non funzionerà. Ad esempio, questo mostra cosa succede quando sono in esecuzione due sessioni di schermate separate:
$ screen -r
There are several suitable screens on:
2242.pts-4.server10 (Detached)
3354.pts-4.server10 (Detached)
Type "screen [-d] -r [pid.]tty.host" to resume one of them.
As the output suggests, you could identify the screen session and select which screen you want to connect to:
$ screen -r 2242.pts-4.server10
Schermata del nome delle sessioni
Invece di utilizzare i nomi predefiniti, puoi creare nomi più descrittivi per le sessioni dello schermo quando avvii screen.
Per esempio:
$ screen -S testsession
$ screen -ls
There is a screen on:
26523.testsession (Attached)
Sessioni di condivisione dello schermo
Queste sono cose molto importanti per gli amministratori di sistema. Il comando screen consente anche la condivisione dello schermo. Questa funzione è ottima per il supporto tecnico perché chiunque abbia effettuato l’accesso alla sessione può digitare e visualizzare la sessione corrente. La creazione di una schermata con nome, come nella sezione precedente, semplifica l’operazione. Quindi un’altra persona su un computer diverso può inviare ssh al server (utilizzando lo stesso nome utente) e digitare quanto segue:
$ screen -x testsession
Come con screen -r
se c’è una sola schermata in esecuzione, non è necessario specificare a quale schermata ci si sta connettendo:
$ screen -x
Quale strumento usi per la connessione remota oltre al comando dello schermo? Per favore, lascia i tuoi commenti