我想知道如何列出所有 udev 规则。
我知道它们可以作为行(一行 = 一个规则)*.rules
存储在这些目录中的文件中
/etc/udev/rules.d
/lib/udev/rules.d
/run/udev/rules.d
/var/run/udev/rules.d
Run Code Online (Sandbox Code Playgroud)
因此,我虽然可以通过简单地连接*.rules
这些目录中的所有文件来找到所有规则。这似乎不起作用(因为执行了一些规则,我在这些目录中找不到任何规则作为规则)。
充其量我认为 udevadm 界面有一个命令,它可以让我打印出 udev 当前拥有的所有规则。
可以肯定的是,我进行了审查,man udevadm
尤其是关于部分udevadm info [parameters]
似乎没有产生任何结果。
鉴于 udev 允许针对同一设备的大量文件和规则,不知道为设备编写所有规则的有效/可行方法令人沮丧。
Run*_*ium 13
如果您使用:
udevadm monitor
Run Code Online (Sandbox Code Playgroud)
对于 KERNEL 和 UDEV 采取的每项操作,您都会获得一个条目。通常添加、更改、删除。如果您包含该--property
选项:
udevadm monitor --property
Run Code Online (Sandbox Code Playgroud)
您将获得所使用属性的列表。
可以使用 udevadm 测试 udev 规则:
udevadm test $(udevadm info -q path -n <device>)
Run Code Online (Sandbox Code Playgroud)
人们可以测试这样的东西:
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
Run Code Online (Sandbox Code Playgroud)
但不确定这有多可靠。总之,例如使用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 Code Online (Sandbox Code Playgroud)
但是猜想从整体上看测试会更好。另请注意消息:
该程序仅用于调试,它不运行任何由 RUN 键指定的程序。它可能会显示不正确的结果,因为某些值可能不同,或者在模拟运行时不可用。
你也可以设置
udev_log="debug"
Run Code Online (Sandbox Code Playgroud)
inudev.conf
并重新启动 udev ( reload udev
) 以获得更详细的输出。
归档时间: |
|
查看次数: |
30807 次 |
最近记录: |