Linux 连接/断开电源时使用udev激活脚本

Linux 连接/断开电源时使用udev激活脚本,linux,udev,Linux,Udev,我试图让udev在连接/断开电源时运行几个小脚本。我在/etc/udev/rules.d/50-caff.rules中有以下代码: SUBSYSTEM=="power_supply", ENV{POWER_SUPPLY_STATUS}=="Charging", RUN+="/home/haukur/rules/off.sh" SUBSYSTEM=="power_supply", ENV{POWER_SUPPLY_STATUS}=="Discharging", RUN+="/home/haukur

我试图让udev在连接/断开电源时运行几个小脚本。我在/etc/udev/rules.d/50-caff.rules中有以下代码:

SUBSYSTEM=="power_supply", ENV{POWER_SUPPLY_STATUS}=="Charging", RUN+="/home/haukur/rules/off.sh"
SUBSYSTEM=="power_supply", ENV{POWER_SUPPLY_STATUS}=="Discharging", RUN+="/home/haukur/rules/on.sh"
以下是on.sh:

#!/bin/sh
caffeine -a
和off.sh:

#!/bin/sh
caffeine -d
总之,我写了这些,写了udevadm控件——将规则重新加载到bash中,然后。。。什么也没发生。当我插上或拔下电源时,咖啡因似乎根本没有激活

根据
/var/log/syslog
(Ubuntu取代了
/var/log/messages
),当我拔下插头时,udev识别:

Feb 26 08:44:52 (none) udevd[3838]: starting '/home/haukur/rules/off.sh'
但当它试图运行off.sh(它自己试图运行咖啡因)时,它返回以下错误:

udevd[2719]: '/home/haukur/rules/off.sh'(err) '** (caffeine:3840): WARNING **: Command line `dbus-launch --autolaunch=62907743a139af9b3c86412e00000026 --binary-syntax --close-stderr' exited with non-zero exit status 1: Autolaunch error: X11 initialization failed.\n'
你知道有什么办法避开这件事吗?使用xmonad WM运行Ubuntu12.04 LTS。

如果应用程序“咖啡因”需要访问您的桌面,您可能需要在调用程序之前导出显示:

export DISPLAY=:0 
您只需在命令调用前加上:

DISPLAY=:0 caffeine -a

只是检查一下你的off.sh和on.sh是否包含有效的shebang?我想你已经检查过你使用的属性是否适合你的设备了吗?今天我了解了什么是shebang,并将它添加到了on和off(即添加了第一行
!/bin/sh
)-没有骰子。我已确认/sys/class/power\u supply/BAT0包含文件
status
,该文件表示
充电
og
放电
,具体取决于相关文件。顺便说一句,这是一款联想ThinkPad E520。别忘了chmod+x shell脚本,并用udevcontrol reload_rulessash重新加载配置。蒂什:是的,我已经完成了,仍然没有什么,但谢谢。udevcontrol log_priority=调试和查看/var/log/messages上的日志