すべてのudevルールをリストしますか(例:デバイス用)。

すべてのudevルールをリストしますか(例:デバイス用)。

すべてのudevルールをリストする方法を知りたいです。

*.rulesこのディレクトリのファイルに行(1行=規則1つ)として保存できることがわかります。

/etc/udev/rules.d
/lib/udev/rules.d
/run/udev/rules.d
/var/run/udev/rules.d

*.rulesしたがって、このディレクトリにあるすべてのファイルをリンクするだけですべてのルールを見つけることができると思います。これはうまくいかないようです(一部のルールが実行され、規則的にそのディレクトリにソフトウェアが見つからないためです)。

私が考えることができる最も良いことは、udevadmインターフェースに現在udevのすべてのルールを印刷するためのコマンドがあることです。

確かにレビューをしましたが、man udevadm特にabout部分はudevadm info [parameters]何の結果も出ていないようでした。

udevが同じデバイスに対して複数のファイルとルールを許可することを考えると、デバイスのすべてのルールを作成する効率的で実行可能な方法を知らないのは残念です。

答え1

以下を使用する場合:

udevadm monitor

KERNELとUDEVが実行したすべての操作のエントリを取得します。通常、追加、変更、削除されます。このオプションが含まれている場合--property:

udevadm monitor --property

使用された属性のリストが表示されます。


udevadmを使用してudevルールをテストできます。

udevadm test $(udevadm info -q path -n <device>)

次のようにテストできます。

udevadm test $(udevadm info -q path -n <device>) 2>&1 | \
sed -n 's/.* \(\/[^ ]*\)\.rules:\([0-9]\+\)/\1.rules \2/p' | \
while read -r f n; do printf "%03d:%-50s " $n "$f"; sed -n ${n}p $f; done

しかし、これがどれほど信頼できるかはわかりません。とにかく、例えば、同様の結果を得るvideo1ことができます。<device>

031:/lib/udev/rules.d/50-udev-default.rules            SUBSYSTEM=="video4linux", GROUP="video"
007:/lib/udev/rules.d/60-persistent-v4l.rules          IMPORT{program}="v4l_id $devnode"
009:/lib/udev/rules.d/60-persistent-v4l.rules          SUBSYSTEMS=="usb", IMPORT{builtin}="usb_id"
010:/lib/udev/rules.d/60-persistent-v4l.rules          KERNEL=="video*", ENV{ID_SERIAL}=="?*", SYMLINK+="v4l/by-id/$env{ID_BUS}-$env{ID_SERIAL}-video-index$attr{index}"
016:/lib/udev/rules.d/60-persistent-v4l.rules          IMPORT{builtin}="path_id"
017:/lib/udev/rules.d/60-persistent-v4l.rules          ENV{ID_PATH}=="?*", KERNEL=="video*|vbi*", SYMLINK+="v4l/by-path/$env{ID_PATH}-video-index$attr{index}"
015:/lib/udev/rules.d/73-seat-late.rules               TAG=="uaccess", ENV{MAJOR}!="", RUN{builtin}+="uaccess"
006:/etc/udev/rules.d/83-webcam.rules                  KERNEL=="video[0-9]", SUBSYSTEMS=="usb", ATTRS{idVendor}=="0c45", SYMLINK+="video-webcam1"

しかしそれを知っているテスト全体的に良いです。次のメッセージも参照してください。

このプログラムはデバッグ専用です。 RUNキーで指定されたプログラムを実行しません。シミュレーションの実行時に一部の値が異なるか使用できないため、誤った結果が表示されることがあります。


設定することもできます。

udev_log="debug"

udev.confより詳細な出力については、udev()を入力して再起動してくださいreload udev

関連情報