back

Per chiudere la sessione grafica torniamo nel terminale di debian (sempre nel mio caso, premendo il pulsante home e riselezionando il terminale dal quale abbiamo avviato debian) e digitiamo:

# vncserver -kill :1

accertandoci, comunque, di aver esportato la variabile USER associata a root. Ancora una volta, usando un comodo script avremo:

#!/bin/bash
export USER=root
vncserver -kill :1
echo "Chiusura della sessione grafica..."

Possiamo salvare tale script come kx (kill x) in /usr/local/bin, e attribuirgli i permessi d'esecuzione. Per fermare la sessione grafica possiamo dunque semplicemente digitare "kx".

NOTA BENE: se ci dimenticassimo di chiudere la sessione, al prossimo avvio del sistema e soprattutto al prossimo avvio della sezione grafica verrà avviato un nuovo display definito come localhost:2 (al posto di localhost:1); oltre a rallentare tutto il sistema (ci saranno due sessioni aperte contemporaneamente) lo script per terminare la sessione sarà valido solo per il primo display. Per chiudere il secondo dovremo dare dunque i comandi:

# export USER=root
# vncserver -kill :2

Per ovviare a tale problema possiamo ora aggiungere un controllo al momento della chiusura del sistema. Il server vnc crea un file localhost:1.pid all'apertura di una sessione. A questo punto basterà verificare se il file esiste e nel caso, chiudere la sessione con lo script kx. Lo script finale dk risulterà dunque:

#!/bin/bash

# controlla se una sessione grafica e' attiva; in caso affermativo chiudila
if [ -e /root/.vnc/localhost:1.pid ]; then
  export USER=root
  echo "Chiusura della sessione grafica..."
  vncserver -kill :1
fi

umount /devpts
umount /sysfs
umount /proc

echo "Arresto il sistema..."

Allo stesso modo possiamo controllare se esiste già una sessione aperta al momento di lanciare sx e in caso affermativo evitare di aprire una nuova sessione. Lo script sx finale risulterebbe come il seguente:

#!/bin/bash

# controlla se una sessione grafica e' gia' attiva; in caso affermativo
# evita di avviarne un'altra uscendo dallo script
if [ -e /root/.vnc/localhost:1.pid ]; then
  echo "Una sessione grafica sul display localohost:1 e' al momento gia' attiva! \
        (avvia semplicemente il client vnc da android)"
  exit 0
fi

# nel caso non esiste nessuna sessione grafica attiva, avviane una
export USER=root
vncserver -geometry 480x320
back