Systemd
使用 udev 規則自動休眠
我正在使用帶有 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 特定的)。