回答:
これはうまくいくはずです。ルールを編集した後、udevルールをリロードしましたか?
udevadm control --reload-rules && udevadm trigger
ルートとして。
KERNEL!="sdz*"
、すべてを取得する必要があります(sdz [1-9]を除く)
udevadm monitor
次のようにコマンドをルートとして与えることができます:
udevadmモニター
ルールが実行されたときに表示されます。
udevadm monitor
udevイベントのみを表示しますが、対応するルールが実行された場合は表示しません。ただし、ルールをトリガーするイベントを探すことはできますが、ルールが機能するかどうかはわかりません。
カーネル3.0.35を実行していますが、次のように動作します。
デバイスのパスを取得するには、次のようなことができます。
udevadm info --name /dev/sda1 --query all
必要以上の情報を取得できますが、DEVPATHに興味があります。次に、実行されているudevルールを確認するには、次を実行します。
udevadm test DEVPATH
私はこれが実際にルールを実行するとは思わない、ドキュメントはこれが与えられたデバイスのイベントを「シミュレートする」と述べている。詳細については、次のmanページをご覧ください:https : //www.freedesktop.org/software/systemd/man/udevadm.html
ルートとしてudev / systemdバージョン241などを使用する場合:
udevadm control --log-priority=debug
journalctl -f
または、再びルートとして永続化するには:
vi /etc/udev/udevd.conf
systemctl restart systemd-udevd
journalctl -f
PS:最も頻繁にまだ私見間違った答えは次のようになります:
udevadm -d test / devices / where / is / my / device |&less
...しかし、これには多くの問題があります。主なもの:
where/is/my/device
?面倒で複雑でエラーが発生しやすい。
最近のudevバージョン241の出力に対する古い回答を比較するudevadm test
と、表示される情報が少ないようです。
udevadm -d test
シミュレーションのみです!警告するたびに:
このプログラムはデバッグ専用であり、RUNキーで指定されたプログラムは実行しません。一部の値が異なるか、シミュレーションの実行時に使用できないため、誤った結果が表示される場合があります。
udevadm test
新しいルールを開発するためのものであり、壊れたルール、欠落したルール、または上書きされたルールのトラブルシューティングのためではありません。
Raspberry Pi 3 B +でも同じ問題が発生していました。USBストレージデバイスの挿入時にスクリプトを呼び出そうとしました。ルールはsyslogに記録されないため、どのルールが機能したか、どのルールが失敗したかを理解することは非常に困難になります。
だから私は次のことをしました:
sudo /etc/init.d/udev restart
そして私がチェックしたとき、それは働いた。
有用な場合とそうでない場合がある情報の一部は、手順2のコマンドが実行されるまで、ファイルシステムがudevに対して読み取り専用であることです。
udevadm test $(udevadm info --query=path --name=device_name)
どのコマンドを教えてくれなければならないだろう理由に、デバイスのプラグ上で実行されudev
、関係のルールを。例えば:
# udevadm test /block/sdd
...
udev_rules_apply_to_event: PROGRAM '/sbin/multipath -c /dev/sdd' /lib/udev/rules.d/40-multipath.rules:11
...
SUBSYSTEMS=="usb"
。つまり、値をキーに割り当てる==
単一=
ではなく、同等性をテストするdouble です。