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