udevルールによる自動休止

udevルールによる自動休止

私は systemd で Debian Jessie を使用しています。以前は、バッテリー残量が 5% 以下になるとコンピューターを休止状態にする acpid スクリプトを使用していました。

それを置き換えるために、私はこの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 に固有のものです)。

関連情報