Come posso ottenere che uno script sia sempre in esecuzione su resume in Lubuntu?

4

Ho incontrato un fastidio su Lubuntu 11.10, descritto qui:

link

Ho trovato una soluzione alternativa, descritta qui:

link

La mia soluzione consiste nel mettere uno script in /etc/pm/sleep.d per l'esecuzione su curriculum.

Tuttavia, la soluzione alternativa sembra funzionare solo quando sospendo l'utilizzo di pm-suspend. Quando sospendo chiudendo il coperchio del mio portatile, la mia soluzione non funziona. Come posso far funzionare uno script quando riprendo dal sonno e che il sonno è stato attivato chiudendo il coperchio?

dettagli:

Sospetto che questo errore potrebbe essere dovuto al fatto che gli script in /etc/pm/sleep.d non vengono eseguiti quando sospendo chiudendo il coperchio. Sospendere con pm-suspend, quindi riprendere chiudendo / aprendo il coperchio funziona bene. Credo che Lubuntu utilizzi xfce4-power-manager per gestire le sospensioni a causa della chiusura del coperchio, forse questo è importante? Preferisco sospendere chiudendo il coperchio del mio portatile, invece di digitare un comando da terminale.

EDIT:

Ispezionando /var/log/pm-suspend.log come suggerito da andrewsomething, possiamo vedere che lo script reset_panel gira su ogni curriculum, fallisce solo nei curricula che seguono le sospensioni attivate dal coperchio. Ho seguito il suo ulteriore suggerimento di aggiungere una dichiarazione di esportazione alla mia sceneggiatura, e ora le cose stanno funzionando. Lo script si attiva troppo presto nel processo di attivazione, ma non è difficile da risolvere. La versione corrente dello script:

#!/bin/bash
case "" in
   suspend|hibernate)
      #do nothing
   ;;
   resume|thaw)
      export DISPLAY=:0 #What does this do? Are there side effects?
      sleep 5 && lxpanelctl restart & #Delayed so the battery icon can finish wrecking shop.
   ;;
   *)
      exit 1
   ;;
esac
exit 0

Erewsomething, se vuoi pubblicare una risposta, accetterò. Grazie per l'aiuto!

    
posta Andrew 24.02.2012 - 14:05

1 risposta

2

Il fatto che il registro contenga /etc/pm/sleep.d/reset_panel resume suspend: Cant connect to display: indica che non è impostata alcuna visualizzazione e si sta tentando di eseguire un programma grafico. Quando stai eseguendo pm-suspend dalla tua sessione, la visualizzazione corretta è stata impostata probabilmente da LightDM o da qualsiasi altro display manager. Quando viene eseguito automaticamente in ripresa, presumo che venga eseguito come utente root e non collegato a uno schermo. Quindi devi impostare tu stesso la variabile di visualizzazione, in questo modo:

#!/bin/bash
case "" in
   suspend|hibernate)
      #do nothing
   ;;
   resume|thaw)
      export DISPLAY=:0
      sleep 5 && lxpanelctl restart & #Delayed so the battery icon can finish wrecking shop.
   ;;
   *)
      exit 1
   ;;
esac
exit 0

L'unico svantaggio è che non funzionerà se visualizzi in realtà non è :0 È l'impostazione predefinita, ma potrebbe cambiare in particolare in un'impostazione multiutente.

    
risposta data andrewsomething 25.02.2012 - 06:20

Leggi altre domande sui tag