Indice dei contenuti dell'articolo:
Nel mondo dell’amministrazione dei sistemi Linux, gli strumenti che consentono di effettuare operazioni multitasking e multiplexing delle sessioni di terminale sono cruciali. Questi strumenti facilitano l’esecuzione di processi in background, permettendo agli utenti di liberare le risorse del terminale per altre operazioni, senza interrompere il processo in esecuzione. Tra i vari strumenti disponibili, “Screen” è uno dei più popolari ed efficaci. Questo post esplorerà l’uso di Screen in un ambiente Linux.
Vantaggi nel lanciare un comando in background
Prima di approfondire il funzionamento di Screen, è importante capire il motivo per cui si potrebbe voler eseguire un comando in background. Un’operazione lunga e impegnativa può legare il terminale per un tempo considerevole, impedendo l’esecuzione di altri comandi. Invece di aspettare che il processo termini, è possibile eseguirlo in background, liberando il terminale per altre attività.
Un altro vantaggio dell’esecuzione dei comandi in background risiede nel fatto che i processi possono continuare a funzionare anche dopo la disconnessione dell’utente. Questo è particolarmente utile in un ambiente di rete, dove un utente remoto può voler avviare un processo su un server e lasciarlo in esecuzione indipendentemente dalla propria connessione.
Cos’è Screen
Screen è un gestore di sessioni di terminale a pieno schermo per Unix-like sistemi operativi. Consente all’utente di avviare una sessione di terminale, eseguire un’applicazione e quindi staccare (“detach”) e riattaccare (“reattach”) la sessione, anche da una connessione remota. Screen è molto utile quando si lavora su sessioni di lunga durata che potrebbero necessitare di essere riprese in un secondo momento o quando si lavora su sessioni remote dove la connessione potrebbe essere interrotta.
Come lanciare un comando in background con Screen
L’uso di Screen è piuttosto semplice. Per avviare una nuova sessione, basta digitare “screen” nella riga di comando. Una volta avviata la sessione, è possibile eseguire qualsiasi comando o applicazione come si farebbe in un normale terminale. Per esempio, si potrebbe avviare un processo di backup lungo e complesso.
Per staccare la sessione e farla proseguire in background, si utilizza la combinazione di tasti ‘Ctrl-A’ seguita da ‘D’. Lo schermo tornerà alla shell originale e il processo inizierà a funzionare in background.
Come recuperare una sessione screen
Una delle funzionalità più potenti di Screen è la capacità di riattaccare una sessione precedente. Per fare ciò, è necessario prima individuare l’ID della sessione che si desidera recuperare. Questo può essere fatto con il comando “screen -ls”, che elencherà tutte le sessioni attive.
Una volta individuato l’ID della sessione, si può riattaccarla con il comando “screen -r [ID]”. Ciò riporterà l’utente alla sessione di Screen esattamente come era stata lasciata, permettendo di continuare il lavoro da dove si era interrotto.
Come fare il detach per far proseguire la sessione in background
Come abbiamo già accennato, una delle caratteristiche più distintive e utili di Screen è la sua capacità di “staccare” una sessione di terminale in esecuzione e lasciarla funzionare in background. Questo permette all’utente di liberare la linea di comando per altre attività, senza interrompere i processi già avviati.
Per attivare questa funzione, bisogna essere all’interno di una sessione Screen e utilizzare la combinazione di tasti ‘Ctrl-A’ seguita da ‘D’. Questo comando detacherà immediatamente la sessione di terminale attiva, mandandola in background e restituendo il controllo al terminale principale. Da qui, l’utente può avviare altre sessioni Screen, eseguire altri comandi, o persino uscire dal terminale o disconnettersi, mentre la sessione staccata continua a funzionare indipendentemente.
Ciò che rende questa funzionalità particolarmente potente è che, una volta staccata, la sessione Screen non è legata al terminale o alla connessione dell’utente. Continua a funzionare in background, anche se l’utente si disconnette o chiude il terminale. Questo è particolarmente utile nel caso di processi di lunga durata o di operazioni su server remoti. Ad esempio, potreste avviare un lungo processo di backup su un server remoto, staccare la sessione Screen, e poi disconnettervi. Il processo di backup continuerà a funzionare sul server, indipendentemente dalla vostra connessione.
Questo tipo di indipendenza permette di gestire in modo flessibile i processi e i compiti, fornendo un controllo senza interruzioni e un efficace uso delle risorse. Sia che siate amministratori di sistema che lavorano su server remoti, o utenti che eseguono compiti di lunga durata, Screen offre un modo semplice ed efficiente per gestire i vostri compiti.
A volte può capitare che la combinazione CTRL + A non dia apparentemente alcun segnale o produca alcun cambiamento, in realtà dovrete solo premere D a seguito per vedere il messaggio di detach.
Comandi, Opzioni, Argomenti e Scorciatoie:
Sintassi:
screen [-opts] [cmd [args]]
Opzioni:
-a: Forza tutte le capacità in ogni termcap della finestra.
-A -[r|R]: Adatta tutte le finestre alla nuova larghezza e altezza del display.
-c file: Legge il file di configurazione invece di ‘.screenrc’.
-d (-r): Stacca lo screen in esecuzione altrove (e lo riattacca qui).
-dmS name: Avvia come demone: sessione Screen in modalità staccata.
-D (-r): Stacca e disconnetti remoto (e riattacca qui).
-D -RR: Fai ciò che è necessario per ottenere una sessione screen.
-e xy: Cambia i caratteri dei comandi.
-f: Attiva il controllo del flusso, -fn = off, -fa = auto.
-h lines: Imposta la dimensione del buffer della cronologia dello scroll back.
-i: Interrompi l’output prima quando il controllo del flusso è attivo.
-l: Attiva la modalità di accesso (aggiorna /var/run/utmp), -ln = off.
-ls [match]: Mostra tutti gli screens collegati.
-L: Attiva il logging dell’output.
-m: Ignora la variabile $STY, crea una nuova sessione screen.
-O: Scegli l’output ottimale piuttosto che l’esatta emulazione vt100.
-p window: Preseleziona la finestra nominata se esiste.
-q: Avvio silenzioso. Esce con codice di ritorno non zero se non riuscito.
-Q: I comandi invieranno la risposta allo stdout del processo di interrogazione.
-r [session]: Riattacca a un processo screen staccato.
-R: Riattacca se possibile, altrimenti avvia una nuova sessione.
-S sockname: Nominare questa sessione .sockname invece di …
-t title: Imposta il titolo. (nome della finestra).
-T term: Utilizza term come $TERM per le finestre, piuttosto che “screen”.
-U: Dì a screen di usare la codifica UTF-8.
-v: Stampa “Screen version 4.06.02 (GNU) 23-Oct-17”.
-x: Collega a uno screen non staccato. (Modalità display multipla).
-X: Esegui come comando screen nella sessione specificata.
Opzioni tasti di scelta rapida:
Ctrl-a + c: Crea una nuova finestra.
Ctrl-a + w: Mostra l’elenco di tutte le finestre attualmente aperte.
Ctrl-a + A: Rinomina la finestra corrente. Il nome apparirà quando elencherai l’elenco delle finestre aperte con Ctrl-a + w.
Ctrl-a + n: Vai alla finestra successiva.
Ctrl-a + p: Vai alla finestra precedente.
Ctrl-a + Ctrl-a: Torna alla ultima finestra utilizzata.
Ctrl-a + k: Chiude la finestra corrente (uccidi).
Ctrl-a + S: Divide la finestra corrente orizzontalmente. Per passare tra le finestre, fai Ctrl-a + Tab.
Ctrl-a + |: Divide la finestra corrente verticalmente.
Ctrl-a + d: Stacca una sessione screen senza fermarla.
Conclusione
Screen, in qualità di gestore delle sessioni di terminale, è un potente alleato per chiunque lavori con i sistemi Linux. La sua versatilità si rispecchia nelle numerose funzioni che offre, rendendolo un vero e proprio multitool nel campo dell’amministrazione di sistema.
Il primo ed evidente vantaggio di Screen è la sua capacità di liberare le risorse di sistema per altri compiti. Questo permette agli utenti di dedicarsi a molteplici operazioni contemporaneamente, senza dover attendere che un comando o un processo termini il suo ciclo di esecuzione. In pratica, Screen consente di delegare al sistema operativo una serie di operazioni, per poi tornare a controllare il loro stato o i loro risultati in un momento successivo.
Ma Screen non si ferma qui. Offre anche la possibilità di gestire processi di lunga durata che possono essere sospesi e ripresi successivamente. Questo è estremamente utile per le operazioni che richiedono molto tempo per essere completate, come il backup di grandi quantità di dati, l’esecuzione di script di manutenzione complessi o l’implementazione di aggiornamenti software su larga scala. Con Screen, questi processi possono essere avviati, monitorati e, se necessario, sospesi, per poi essere ripresi esattamente da dove erano stati interrotti, senza perdere alcun progresso.
Per coloro che lavorano in ambienti remoti, Screen offre un ulteriore livello di comodità. La possibilità di staccare una sessione in corso, disconnettersi dal sistema e poi riattaccare la stessa sessione in un secondo momento, indipendentemente dalla posizione geografica, rende Screen uno strumento indispensabile per l’amministrazione remota di server e sistemi.
In conclusione, per chi si trova a gestire operazioni complesse e lunghe, lavora in modalità remota, o semplicemente desidera ottimizzare il proprio flusso di lavoro con il terminale, Screen può rappresentare un’aggiunta inestimabile alla propria cassetta degli attrezzi. Con la sua vasta gamma di funzioni e la sua facilità di utilizzo, Screen si rivela un alleato di fiducia nell’ambito dell’amministrazione di sistema, rendendo la vita degli utenti Linux non solo più facile, ma anche più produttiva.