Systemd

使用 udev 規則自動休眠

  • October 14, 2014

我正在使用帶有 systemd 的 Debian Jessie。過去我使用過一個 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"

為什麼第一條規則不能讓我的筆記型電腦休眠?

您用於 systemctl 的路徑是錯誤的。systemctl 位於 /bin/,而不是 /usr/bin/(這是 Debian/Ubuntu 特定的)。

引用自:https://unix.stackexchange.com/questions/161863