Answers:
$ udevadm info -q all -a /dev/sdb
注意:上面的代码在UDEV数据库中查询设备信息,info
我们正在查询所有信息-q all
,并且正在遍历/sys
与该设备标签有关的所有属性。
摘抄
--attribute-walk|-a
Print all sysfs properties of the specified device that can be used
in udev rules to match the specified device. It prints all devices
along the chain, up to the root of sysfs that can be used in udev
rules.
这是我的/dev/sda
设备。
$ udevadm info -q all -a /dev/sda | grep parent
walks up the chain of parent devices. It prints for every device
and the attributes from one single parent device.
looking at parent device '/devices/pci0000:00/0000:00:1f.2/ata1/host0/target0:0:0/0:0:0:0':
looking at parent device '/devices/pci0000:00/0000:00:1f.2/ata1/host0/target0:0:0':
looking at parent device '/devices/pci0000:00/0000:00:1f.2/ata1/host0':
looking at parent device '/devices/pci0000:00/0000:00:1f.2/ata1':
looking at parent device '/devices/pci0000:00/0000:00:1f.2':
looking at parent device '/devices/pci0000:00':
@sepero的答案是在叶节点处显示与UDEV设备有关的信息。
$ udevadm info -q all -n /dev/sda > udevadm_info_1.txt
我的答案显示了遍历/sys
设备整个链层次结构的属性。
$ udevadm info -q all -a /dev/sda > udevadm_info_2.txt
您可以看到两者之间的区别。
$ diff -y udevadm_info_1.txt udevadm_info_2.txt \
> udevadm_info_diff.txt
注意:我正在使用以下版本的204在Fedora 19上运行udevadm
:
$ udevadm --version
204
udevadm info -q all
,而不是的输出udevadm info -a
。我认为这-a
是的捷径-q all --attribute-walk
。还是您的版本不同?我不记得这种变化,但是后来我已经好几年没有使用Fedora了(但是为什么发行版会对此进行修补?)。
udevadm info
提供此类信息。
如果您特别想要子系统:
udevadm info -n /dev/sdb -q property | sed -n 's/SUBSYSTEM=//p'
在编写udev规则时,最有用的命令是
udevadm info -a -n /dev/sdb
这会打印出规则,可用于在udev规则中匹配设备。第一个块与设备本身有关,后续的块与设备树中的祖先有关。唯一的警告是您不能混合与不同祖先对应的键。例如,鉴于此摘录
KERNEL=="sdb"
SUBSYSTEM=="block"
…
KERNELS=="5:0:0:0"
SUBSYSTEMS=="scsi"
DRIVERS=="sd"
ATTRS{model}=="Yoyodyne Diskinator"
…
KERNELS=="0000:00:1f.2"
SUBSYSTEMS=="pci"
DRIVERS=="ahci"
那么您可以将此设备与SUBSYSTEM=="block", SUBSYSTEMS=="scsi", ATTRS{model}="Yoyodyne Diskinator"
或匹配,SUBSYSTEM=="block", SUBSYSTEMS=="pci", DRIVERS="ahci"
但不能与匹配SUBSYSTEM=="block", SUBSYSTEMS=="scsi", ATTRS{model}="Yoyodyne Diskinator", DRIVERS="ahci"
。
获取用于规则的信息的另一种方法是
udevadm info -q property -n /dev/sdb --export
这会打印格式的设备属性值,您可以在udev规则中使用它。KEY=VALUE
ENV{KEY}=="VALUE"
如果您的设备没有/dev
条目,则可以使用下面的路径来引用它/sys
,例如
udevadm info -a -p /sys/block/sdb
(在这种情况下,这不是一个有用的示例-这对于类别不常见且还没有条目的设备很有用/dev
)。
当您更改udev规则时,将自动读取它们。但是,它们仅适用于随后插入系统的设备。要将新规则应用于已连接的设备,请使用udevadm trigger
(带有选项以将应用程序限制为某些设备)。
udevadm info -a -n /dev/sdb
?