udevルールが機能しない

udevルールが機能しない

udevUSBデバイスをマウントし、いくつかのデータをバックアップし、すべてをクリーンアップするためのルールを作成しました。実は私はDebianサーバーで働いています。

私のUSBデバイスに関する情報は次のとおりです。lsusb

バス001デバイス003:ID 054c:0243 Sony Corp。 MicroVaultフラッシュドライブ

(実際にはlsusbより多くのバス/デバイスが返されますが、Debianコンピュータで公開していないので、自分で書く必要がありました:)

それから私はルールを次のように書きましたudev

10-usb_back.rules

入力する:

/etc/udev/rules.d/

(バックアップスクリプトには数秒かかるため、95を使用し、他のタスクが遅れないようにできるだけ遅く実行したいと思いました)

そして最後に、ルール自体は次のようになります。

ACTION=="add", SUBSYSTEM=="usb", ATTRS{idVendor}=="054c", ATTR{idProduct}=="0243", RUN+="/usr/local/bin/mount_usb"
ACTION=="add", SUBSYSTEM=="usb", ATTRS{idVendor}=="054c", ATTR{idProduct}=="0243", RUN+="/usr/local/bin/backup_database"

私もこれを試しました:

ACTION=="add", SUBSYSTEM=="usb", ATTR{idVendor}=="054c", ATTR{idProduct}=="0234", RUN+="bash /usr/local/bin/mount_usb"

失敗:(

その後、再起動します。udev

sudo /etc/init.d/udev restart

USBデバイスを接続すると、次のような奇妙なメッセージが表示されます。

[1348.295280] sd 6:0:0:0: [sdc] ドライブキャッシュ仮定: 連続書き込み

二重

しかし、何も起こりませんでした。 USBデバイスがインストールされておらず、データがバックアップされていません。

I looked with tail -f /var/log/message

USBドライブが検出されたようです:

usb 1-3: Product Storage Media 
usb 1-3 Manufacturer Sony`
...

どこかに問題があるのは間違いありませんが、何なのか、どこにいるのかわかりません:(

編集:サーバー上のすべてを書き換えることができないので少し怠惰なので、必要に応じてスクリプトや追加のログメッセージなどの追加情報を要求してください。 :)

ベストアンサー1

ホットプラグでバックアップを実行するタスクudevルールは次のとおりです。

SUBSYSTEM=="block" ACTION=="add" \
      ENV{DEVTYPE}=="partition" \
      ENV{ID_FS_UUID}=="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" \
      TAG+="store" \
      RUN+="/usr/bin/python3 /etc/systemd/autoback.py --udev"

/dev/sde1USBデバイスと一致するのではなく、そのUSBデバイスの大容量記憶装置エンドポイントにあるパーティションです。 USBホットプラグ後にディスクが準備され、パーティションが列挙されるまでに数秒かかります。これは私のユースケースに「正しい」イベントであり、バックアップを実行したい場合でも同様です。このパーティションについてID_FS_UUID報告されたものと同じです。blkid私の場合はluksUUIDです。

私のシステムでは、ルールを編集するときにudevが自動的に正しく再ロードされないようですが、うまくいくことが確認されています(デバッグにも役立ちます)。

udevadm test /sys/dev/block/8:65

udevルールを強制的に再ロード/再適用します。私はこれ8:65を通してこれを見つけましたls -l /dev/block | grep sde1。返品

udevadm info --query=property /dev/sde1

私のルールが適用されていることを確認するのに役立ちます。

注:OPが投稿して5年後にこの回答を投稿するので、当時と現在の状況が異なる場合があります。私のシステムはarm64のUbuntu 16.04.4(xenial)です。

おすすめ記事