OS LiteがインストールされているRaspberry Pi 4と一部のディスクドライブがUSBポートに接続されています。また、ドライブがスタンバイモードに入ったときに実行したいPythonスクリプトもあります。 「/etc/udev/rules.d」に「99-hdd-standby.rules」というファイルを作成し、その中に次の内容を追加しました。
ACTION=="change", DEVNAME=="*/sd[a-z]", ATTR{state}=="active/idle", RUN+="/usr/bin/python3 /home/marus/hdd_power.py act %k"
ACTION=="change", DEVNAME=="*/sd[a-z]", ATTR{state}=="standby", RUN+="/usr/bin/python3 /home/marus/hdd_power.py stb %k"
ファイルを保存してudevサービスを再起動しました。ただし、ハードディスクがスタンバイ状態になっていると、Pythonスクリプトは実行されません。スクリプトにエラーがありません。手動で実行すると通知が届きます。
その後、この単純なルールを使用してこれが機能していることを確認しました。
ACTION=="change", SUBSYSTEM=="usb", RUN+="/bin/echo 'USB device state changed' >> /home/marus/udev_log.txt"
USBデバイスが接続または切断されたら、ファイルに書き込む必要があります。しかし、やはり効果はありませんでした...
トリガーするルールを作成できません。何が起こっていますか?
修正する:
私はこのルールを試してみました。
SUBSYSTEM=="block", ACTION=="add", RUN+="/usr/local/bin/trigger.sh"
...実際には、ハードドライブを接続または切断するとスクリプトが実行されます。これも確認されましたudevadm monitor
。ただし、ドライブをスタンバイモードに切り替えると、udevadm モニターでイベントは発生しません。したがって、ドライブがスタンバイモードに入ったときにudevを使用して通知を受け取ることはできないと思います。
他のアイデアがあれば教えてください。