USB接続/分離のためのUdevルールはトリガされません。

USB接続/分離のためのUdevルールはトリガされません。

私はRHEL6を実行していてUSBデバイスを挿入して削除するときにトリガーされるudevルールを作成しようとしています。80-usb.rules呼び出されたファイルを生成し、/etc/udev/rules.d/次の内容を提供しました(まだ具体的な内容はないのでテストしてみたかったです)。

ACTION=="add", SUBSYSTEMS=="usb", RUN+="touch /tmp/test"

テストのためにファイルを保存し、USBドライブを接続しました。ただし、ファイルは/tmp/test生成されません。

udevadm infoUSBドライブで実行でき、親デバイスの少なくとも1つに属性があるため、udevルールはUSBドライブと一致する必要があると思いますSUBSYSTEMS=="usb"

udevルールがトリガーされないのはなぜですか?

私は実行しようとしましたが、私が作成したファイルが処理されていて、私のルールが一致することはudevadm test --action=add /path/to/device明らかでした。.rules出力の関連行は次のとおりです。

parse_file: reading '/etc/udev/rules.d/80-usb.rules' as rules file
udev_rules_apply_to_event: RUN '/bin/touch /tmp/test' /etc/udev/rules.d/80-usb.rules:1
udevadm_test: run: '/bin/touch /tmp/test'

しかし、まだ/tmp/testそこにはありません。混乱しています。明らかに、このルールが一致し、ルールが適用されています。それでは、なぜRUN実行として指定されたコマンドが実行されないのですか?

ベストアンサー1

ルールは実行可能ファイルへの絶対パスを提供する必要があります。

ACTION=="add", SUBSYSTEMS=="usb", RUN+="/usr/bin/touch /tmp/test"

編集する:

スクリプトを実行するには、どのシェルがスクリプトを実行するかを教えてください。

ACTION=="add", SUBSYSTEMS=="usb", RUN+="/bin/sh /path/to/your/script"

おすすめ記事