Il comando screen

Il comando screen permette di avere una interfaccia tra un terminale fisico (in pratica: noi) e un comando (in genere la shell). Tale interfaccia, che agisce da proxy, permette anche ad altri terminali fisici di "agganciarsi".

In sostanza: possiamo interagire con la stessa shell da più terminali.

Screen fa molte altre cose: ad esempio agisce da vero e proprio "window manager di terminale", permettendo di avere in una sessione più finestre di shell aperte. Ma sono funzionalità che in questo articolo non verranno trattate.

Un altro utilizzo potrebbe essere quello dell'esecuzione di comandi complessi via cron: potremmo avere un modo per vedere cosa quei comandi stanno facendo, magari se si sono bloccati.

Quando vogliamo iniziare una sessione di screen è sufficiente che digitiamo "screen" (dopo averlo installato, ovvio). Da quel momento in poi abbiamo creato un ambiente al quale possiamo collegarci anche da altri terminali, e tutto ciò che eseguiamo possiamo poi riprenderlo altrove.

Visto che io sono pigro e smemorato, e mi dimentico sempre di avviarlo manualmente quando potrebbe servirmi, ho modificato il file .bashrc per far partire screen automaticamente in ogni terminale, aggiungendo:

if [ "$STY" == "" ] ; then
   screen 
fi

 

Questo un elenco dei comandi utili:

screen -ls
  Mostra le sessioni aperte e collegate (attached) o scollegate (detached)

echo $STY
  Mostra il pid della sessione attuale (se siamo dentro una) 

screen -x [PID]
  Collega una sessione aperta e già collegata altrove, diventa "multi-window" (la vediamo da piu' parti). Poi possiamo usare "Ctrl+a, d" per uscire lasciando collegate le altre.
  Da notare che se PID è scollegata, la collega comunque (come -r). Quindi può convenire sempre usare -x

screen -r [PID]
  Ricollega una sessione aperta ma scollegata (detached). Ma preferisco usare "-x" per i motivi detti sopra.

screen -d -m [COMMAND]
  Esegue il comando in una nuova sessione, staccata (se tolgo -d usa la sessione attuale creando una nuova finestra, se c'è). Utile (anche senza -d) in cron. Quando il comando finisce chiude anche la sessione (o finestra senza -d)

Ctrl+a, d
  Scollega la sessione attuale (ma la lascia aperta). Utile anche se siamo in multi-window (screen -x) per uscire lasciando collegate le altre finestre

Ctrl+a, ESC
  Va in modalità scrollback mode: con i cursori possiamo tornare indietro nell'output (per vedere cosa ha scritto l'ultimo comando se non sta nella pagina). Con ESC torniamo alla command line

Ovviamente per vedere tutti le possibilità di comandi, sequenze di escape... basta guardare il man...

 

Per concludere, questo lo ~/.screenrc che uso io, giusto per migliorare un pelo quello base:

startup_message off
defscrollback 10000
term screen-256color
hardstatus off
hardstatus alwayslastline
hardstatus string '%{= kG}[ %{G}%H %{g}][%= %{= kw}%?%-Lw%?%{r}(%{W}%n*%f%t%?(%u)%?%{r})%{w}%?%+Lw%?%?%= %{g}]'
termcapinfo xterm* ti@:te@

Commenti

Non ci sono ancora commenti.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I commenti vengono pubblicati dopo la moderazione.