如何让脚本在 Lubuntu 中始终恢复运行?

如何让脚本在 Lubuntu 中始终恢复运行?

我在 Lubuntu 11.10 上遇到了一个烦恼,描述如下:

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

我想出了一个解决方法,如下所述:

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

我的解决方法是将一个脚本放入 /etc/pm/sleep.d 中以便在恢复时运行。

但是,只有在使用 pm-suspend 暂停时,此解决方法才有效。当我通过合上笔记本电脑的盖子来暂停时,我的解决方法就会失败。如何让脚本在我从睡眠状态恢复时运行,并且该睡眠状态是由合上盖子触发的?

细节:

我怀疑此失败可能是因为当我通过合上盖子暂停时,/etc/pm/sleep.d 中的脚本没有执行。使用 pm-suspend 暂停,然后通过合上/打开盖子恢复,效果很好。我相信 Lubuntu 使用 xfce4-power-manager 来处理由于合上盖子而导致的暂停,也许这很重要?我更喜欢通过合上笔记本电脑的盖子来暂停,而不是输入终端命令。

编辑:

通过检查 andrewsomething 建议的 /var/log/pm-suspend.log,我们可以看到 reset_panel 脚本在每次恢复时都会运行,只是在 lid 触发的暂停之后的恢复时会失败。我按照他的进一步建议,在脚本中添加了导出语句,现在一切正常。脚本在唤醒过程中触发得太早,但这并不难修复。脚本的当前版本:

#!/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,如果你想发表答案,我会接受。谢谢你的帮助!

答案1

日志中包含的事实/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默认设置,它将不起作用,但它可能会发生变化,特别是在多用户设置中。

相关内容