4 Luglio 2023

La magia del multitasking con Screen su Linux: una guida essenziale

Scopri come migliorare la tua efficienza con l’uso di Screen, lo strumento per la gestione delle sessioni di terminale su Linux.

Linux-Screen

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.

Hai dei dubbi? Non sai da dove iniziare? Contattaci !

Abbiamo tutte le risposte alle tue domande per aiutarti nella giusta scelta.

Chatta con noi

Chatta direttamente con il nostro supporto prevendita.

0256569681

Contattaci telefonicamente negli orari d’ufficio 9:30 – 19:30

Contattaci online

Apri una richiesta direttamente nell’area dei contatti.

INFORMAZIONI

Managed Server S.r.l. è un player italiano di riferimento nel fornire soluzioni avanzate di sistemistica GNU/Linux orientate all’alta performance. Con un modello di sottoscrizione dai costi contenuti e prevedibili, ci assicuriamo che i nostri clienti abbiano accesso a tecnologie avanzate nel campo dell’hosting, server dedicati e servizi cloud. Oltre a questo, offriamo consulenza sistemistica su sistemi Linux e manutenzione specializzata in DBMS, IT Security, Cloud e molto altro. Ci distinguiamo per l’expertise in hosting di primari CMS Open Source come WordPress, WooCommerce, Drupal, Prestashop, Joomla, OpenCart e Magento, affiancato da un servizio di supporto e consulenza di alto livello adatto per la Pubblica Amministrazione, PMI, ed aziende di qualsiasi dimensione.

Red Hat, Inc. detiene i diritti su Red Hat®, RHEL®, RedHat Linux®, e CentOS®; AlmaLinux™ è un marchio di AlmaLinux OS Foundation; Rocky Linux® è un marchio registrato di Rocky Linux Foundation; SUSE® è un marchio registrato di SUSE LLC; Canonical Ltd. detiene i diritti su Ubuntu®; Software in the Public Interest, Inc. detiene i diritti su Debian®; Linus Torvalds detiene i diritti su Linux®; FreeBSD® è un marchio registrato di The FreeBSD Foundation; NetBSD® è un marchio registrato di The NetBSD Foundation; OpenBSD® è un marchio registrato di Theo de Raadt. Oracle Corporation detiene i diritti su Oracle®, MySQL®, e MyRocks®; Percona® è un marchio registrato di Percona LLC; MariaDB® è un marchio registrato di MariaDB Corporation Ab; REDIS® è un marchio registrato di Redis Labs Ltd. F5 Networks, Inc. detiene i diritti su NGINX® e NGINX Plus®; Varnish® è un marchio registrato di Varnish Software AB. Adobe Inc. detiene i diritti su Magento®; PrestaShop® è un marchio registrato di PrestaShop SA; OpenCart® è un marchio registrato di OpenCart Limited. Automattic Inc. detiene i diritti su WordPress®, WooCommerce®, e JetPack®; Open Source Matters, Inc. detiene i diritti su Joomla®; Dries Buytaert detiene i diritti su Drupal®. Amazon Web Services, Inc. detiene i diritti su AWS®; Google LLC detiene i diritti su Google Cloud™ e Chrome™; Facebook, Inc. detiene i diritti su Facebook®; Microsoft Corporation detiene i diritti su Microsoft®, Azure®, e Internet Explorer®; Mozilla Foundation detiene i diritti su Firefox®. Apache® è un marchio registrato di The Apache Software Foundation; PHP® è un marchio registrato del PHP Group. CloudFlare® è un marchio registrato di Cloudflare, Inc.; NETSCOUT® è un marchio registrato di NETSCOUT Systems Inc.; ElasticSearch®, LogStash®, e Kibana® sono marchi registrati di Elastic N.V. Questo sito non è affiliato, sponsorizzato, o altrimenti associato a nessuna delle entità sopra menzionate e non rappresenta nessuna di queste entità in alcun modo. Tutti i diritti sui marchi e sui nomi di prodotto menzionati sono di proprietà dei rispettivi detentori di copyright. Ogni altro marchio citato appartiene ai propri registranti. MANAGED SERVER® è un marchio registrato a livello Europeo da MANAGED SERVER SRL Via Enzo Ferrari, 9 62012 Civitanova Marche (MC) Italia.

Torna in alto