使用 udev 规则自动休眠

使用 udev 规则自动休眠

我正在使用 Debian Jessie 和 systemd。过去,我使用了 acpid 脚本,让我的计算机在电池电量低于 5% 或更低时休眠。

为了尝试替换它,我制定了这个 udev 规则(如所描述的这里在 Arch wiki 中):

$ cat /etc/udev/rules.d/99-lowbat.rules 
SUBSYSTEM=="power_supply", ATTR{status}=="Discharging", ATTR{capacity}=="5", RUN+="/usr/bin/systemctl hibernate" 
SUBSYSTEM=="power_supply", ATTR{status}=="Discharging", ATTR{capacity}=="4", RUN+="/usr/bin/systemctl hibernate"
SUBSYSTEM=="power_supply", ATTR{status}=="Discharging", ATTR{capacity}=="3", RUN+="/usr/bin/systemctl hibernate"
SUBSYSTEM=="power_supply", ATTR{status}=="Discharging", ATTR{capacity}=="2", RUN+="/usr/bin/systemctl hibernate"
SUBSYSTEM=="power_supply", ATTR{status}=="Discharging", ATTR{capacity}=="1", RUN+="/usr/bin/systemctl hibernate"
SUBSYSTEM=="power_supply", ATTR{status}=="Discharging", ATTR{capacity}=="0", RUN+="/usr/bin/systemctl hibernate"

它不起作用。

我尝试制定有效的测试规则:

$ cat /etc/udev/rules.d/98-discharging.rules
SUBSYSTEM=="power_supply", ATTR{status}=="Discharging", RUN+="/usr/bin/touch /home/myname/discharging"

为什么第一条规则无法使我的笔记本电脑休眠?

答案1

您用于 systemctl 的路径是错误的。 systemctl 位于 /bin/ 中,而不是 /usr/bin/ 中(这是 Debian/Ubuntu 特定的)。

相关内容