使用 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 特定的)。

相關內容