我有一台装有 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 是不可能收到通知的。
如果您还有其他想法,请告诉我。