UdevルールはすべてのUSBストレージデバイスと一致します。

UdevルールはすべてのUSBストレージデバイスと一致します。

udev特定のデバイスだけでなく、接続されているすべてのUSB大容量ストレージデバイスにルールを適用するにはどうすればよいですか?idVendorそして何を変えるべきですかidProduct

 ACTION=="add", SUBSYSTEM=="usb", SYSFS{idVendor}=="0204", SYSFS{idProduct}=="6025",
     RUN+="/home/workspace/bash_script.sh"

答え1

ストレージデバイスはサブシステムにあるため、ルールに次のエントリを追加するblock必要があります。SUBSYSTEM=="block"

ACTION=="add", KERNEL=="sd?", SUBSYSTEM=="block", ENV{ID_BUS}=="usb", \
    RUN+="/path/to/script"

使用すると、USBストレージデバイスを追加するたびにsystemdユニットを起動できます。systemdたとえば、次のような単位ファイルを作成します/etc/systemd/system/my-usb-rule.service

[Service]
Type=oneshot
ExecStart=/path/to/script

そして、次の規則/etc/udev/rules.d/85-my-usb-rule.rules

ACTION=="add", KERNEL=="sd?", SUBSYSTEM=="block", ENV{ID_BUS}=="usb", \
    ENV{SYSTEMD_WANTS}="my-usb-rule.service"

これでudev、すべてのUSBストレージデバイスでトリガされますmy-usb-rule.service(したがってスクリプトの実行)。次へ追加イベント。


ルール/単位を編集した後、設定を再ロードすることを忘れないでください。

udevadm control --reload
systemctl daemon-reload

関連情報