Ответы:
$ 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
ПРИМЕЧАНИЕ: я работаю на Fedora 19, используя версию 204 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
?