salta alla navigazione

Screen, altro che compiz! 30 dicembre 2006 - 22:34

Inviato da Antonio De Luci (imu) in : Debian, GNU, Guide, Linux, O.S. Revolution, Only Nerd, Tips , trackback
Articolo Scritto da ZioFork

Uno strumento potentissimo ma poco conosciuto è screen. Traducendola un po’ maccheronicamente, la pagina del manuale recita più o meno così: “Screen è un window manager a pieno schermo che permettere di condividere un terminale fisico tra più processi”.

Nel periodo in cui l’interfaccia 3D sembra essere la funzionalità fondamentale che il sistema operativo deve offrire all’utente, perchè mai dovremmo preoccuparci di un software che svolge un compito apparentemente così semplice ed insignificante? Semplicemente perché per noi nerd è dannatamente utile… vediamo come.

La funzionalità più notevole di screen consiste nel poterlo “staccare” dal terminale reale a cui è connesso lasciandolo in esecuzione in background con tutti i processi ad esso collegati per poi riportarlo in foreground in un secondo tempo. Questo torna utile per esempio quando occorre lavorare su macchine remote tramite ssh: a volte capita di dover eseguire lavori in batch che richiedono tempo: basta connettersi, aprire una shell sotto screen, avviare l’elaborazione e “staccare” screen; si potrà poi successivamente riprendere il lavoro sulla sessione sospesa ricollegandosi, anche da un altro host, e riportando in primo piano screen. Altro caso in cui torna utile è quando si dispone di una connessione instabile: nel caso di perdita di connettività la sessione interrotta può essere ripresa dal punto esatto in cui era stata lasciata.

Cominciamo a fare pratica: apriamo il nostro emulatore di terminale preferito e digitiamo semplicemente:
screen top
Questo comando non fa altro che lanciare il comando top all’interno di una sessione screen; se viene lanciato senza argomenti apre una shell all’interno di una nuova sessione.

A questo punto “disconnettiamo” la sessione screen dal terminale digitando CTRL+a seguito da d (detach): vedremo scomparire la schermata di top e screen stamperà a schermo ” [detached]“. Questo significa che è ancora in esecuzione ma non più collegato al terminale.

Per riprendere la sessione basterà digitare, anche da un altro terminale:
screen -r
che riporterà top sul terminale esattamente come lo avevamo lasciato.

Ora possiamo creare un nuovo “terminale virtuale” nella nostra sessione screen: per farlo è sufficiente premere CTRL+a seguito da c (create): vedremo scomparire l’interfaccia di top che verrà sostituita dal classico prompt della shell sul quale possiamo lavorare normalmente, per esempio aprendo una istanza di vim. Per tornare al terminale contenente top possiamo usare la sequenza CTRL+a n (next) oppure CTRL+a Spazio. Per navigare tra i terminali virtuali nell’ordine inverso invece si usa CTRL+a p (previous). CTRL-a CTRL-a scambia il terminale attuale con il precedente.

Se abbiamo un terminale abbastanza grande possiamo voler visualizzare più terminali virtuali contemporaneamente: possiamo dividere il terminale reale usando la sequenza CTRL+a S (Split) creando due finestre. Per spostarsi tra le finestre la sequenza da usare è CTRL+a Tab. Per chiudere la finestra attuale bisogna digitare CTRL+A X.

La sequenza per avere un elenco dei terminali virtuali è CTRL+a “. Ciascuno dei terminali può essere rinominato con CTRL+a A (nAme).

Screen termina quando tutti i processi da esso controllati terminano.

È anche possibile il copia e incolla tra i terminali virtuali: la procedura di copia si avvia con CTRL+a [, si punta il cursore sull'inizio dell'area da selezionare usando grosso modo gli stessi comandi di movimento impiegati da vim (tasti freccia, h, j, k, l, 0, $, ecc..), si preme Spazio per segnare l'inizio, ci si sposta alla fine e si termina premendo ancora Spazio. Per incollare la selezione basta premere CTRL+a ].

Le impostazioni di screen vengono caricate dai file ~/.screenrc e /etc/screenrc: possono essere rimappati i tasti, impostati programmi da avviare automaticamente ecc… Qui riporto il contenuto del mio ~/.screenrc per dei settaggi di base:
startup_message off
defscrollback 2000
defutf8 on
vbell off
hardstatus off
# Riabilita la barra di scorrimento xterm
termcapinfo xterm*|rxvt ti@:te@
bind k
bind ^k
bind .
bind ^\
bind \\
bind ^h
bind h
bind 'K' kill
bind 'I' login on
bind 'O' login off
bind '}' history

Le possibilità offerte da screen non finiscono certamente qui: può loggare l’attività dei terminali, può gestire porte seriali, ma per un elenco esaustivo delle potenzialità e per approfondire il suo funzionamento vi rimando al manuale di screen.

Commenti»

1. tuxology - 19 aprile 2008- 16:16

Grazie mille Imu, come al solito i tuoi articoli sono sempre ben fatti e moooltooo utili ;-)
Un salutone da un lettore affezzionato :-)
Francesco

Usa Mozilla Firefox Mozilla Firefox 2.0.0.13 con Linux Linux