web-dev-qa-db-ja.com

Lubuntuで常に再開時にスクリプトを実行するにはどうすればよいですか?

ここで説明するLubuntu 11.10で迷惑になりました。

http://ubuntuforums.org/showthread.php?t=1869357

ここで説明する回避策を思い付きました。

http://ubuntuforums.org/showpost.php?p=11714061&postcount=

私の回避策は、スクリプトを/etc/pm/sleep.dに入れて再開時に実行することです。

ただし、回避策はpm-suspendを使用して中断したときにのみ機能するようです。ラップトップの蓋を閉じて中断すると、回避策は失敗します。スリープから再開したときにスクリプトを実行するにはどうすればよいですか?また、ふたを閉じるとスリープがトリガーされますか?

詳細:

この障害は、ふたを閉じて中断したときに/etc/pm/sleep.d内のスクリプトが実行されないためだと思われます。 pm-suspendでサスペンドしてから、ふたを閉じたり開いたりして再開するとうまくいきます。 Lubuntuはxfce4-power-managerを使用して、ふたが閉じたことによるサスペンションを処理していると思いますが、これはおそらく重要ですか?ターミナルコマンドを入力するのではなく、ラップトップの蓋を閉じて中断することを好みます。

編集:

Andrewsomethingが示唆する/var/log/pm-suspend.logを調べると、resume_panelスクリプトがすべての履歴書で実行されていることがわかります。私は、スクリプトにエクスポートステートメントを追加するという彼のさらなる提案に従いました。スクリプトは起動プロセスの早い段階でトリガーされますが、修正するのは難しくありません。スクリプトの現在のバージョン:

#!/bin/bash
case "$1" 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

andrewsomething、あなたが答えを投稿したい場合、私は受け入れます。助けてくれてありがとう!

4
Andrew

ログに/etc/pm/sleep.d/reset_panel resume suspend: Cant connect to display:が含まれていたという事実は、表示が設定されておらず、グラフィカルプログラムを実行しようとしていることを示しています。セッションからpm-suspendを実行しているときに、おそらくLightDMまたはディスプレイマネージャーによって正しいディスプレイが設定されました。再開時に自動的に実行されるときは、rootユーザーとして実行され、ディスプレイに接続されていないことを想定しています。そのため、次のように表示変数を自分で設定する必要があります。

#!/bin/bash
case "$1" 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

唯一の欠点は、表示が実際に:0でない場合は機能しないことです。これはデフォルトですが、特にマルチユーザー設定では変更される可能性があります。

2
andrewsomething