Câu trả lời:
$ udevadm info -q all -a /dev/sdb
LƯU Ý: các truy vấn trên cơ sở dữ liệu UDEV về thông tin thiết bị info
, chúng tôi đang truy vấn tất cả thông tin -q all
và chúng tôi đang đi bộ tất cả các thuộc tính /sys
liên quan đến nhãn thiết bị này.
đoạn trích
--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.
Đây là /dev/sda
thiết bị của tôi .
$ 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':
Câu trả lời của @ sepero đang hiển thị thông tin chỉ liên quan đến thiết bị UDEV tại nút lá.
$ udevadm info -q all -n /dev/sda > udevadm_info_1.txt
Câu trả lời của tôi cho thấy các thuộc tính khi nó đi qua toàn bộ /sys
phân cấp chuỗi của thiết bị.
$ udevadm info -q all -a /dev/sda > udevadm_info_2.txt
Bạn có thể thấy sự khác biệt giữa hai.
$ diff -y udevadm_info_1.txt udevadm_info_2.txt \
> udevadm_info_diff.txt
LƯU Ý: Tôi đang chạy trên Fedora 19, sử dụng phiên bản 204 của udevadm
:
$ udevadm --version
204
udevadm info -q all
, không phải từ udevadm info -a
. Tôi nghĩ -a
là một phím tắt cho -q all --attribute-walk
. Hoặc điều này là khác nhau trên phiên bản của bạn? Tôi không nhớ sự thay đổi này, nhưng sau đó tôi đã không sử dụng Fedora trong nhiều năm (nhưng tại sao một bản phân phối sẽ vá điều này?).
udevadm info
cung cấp loại thông tin này.
Nếu bạn đặc biệt muốn hệ thống con:
udevadm info -n /dev/sdb -q property | sed -n 's/SUBSYSTEM=//p'
Khi bạn viết quy tắc udev, lệnh hữu ích nhất là
udevadm info -a -n /dev/sdb
Điều này in ra các quy tắc mà bạn có thể sử dụng để khớp với thiết bị trong các quy tắc udev. Khối đầu tiên là về chính thiết bị và các khối tiếp theo là về tổ tiên của nó trong cây thiết bị. Nhắc nhở duy nhất là bạn không thể trộn các phím tương ứng với các tổ tiên khác nhau. Ví dụ, đưa ra đoạn trích này
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"
sau đó bạn có thể kết hợp thiết bị này với SUBSYSTEM=="block", SUBSYSTEMS=="scsi", ATTRS{model}="Yoyodyne Diskinator"
hoặc với SUBSYSTEM=="block", SUBSYSTEMS=="pci", DRIVERS="ahci"
nhưng không với SUBSYSTEM=="block", SUBSYSTEMS=="scsi", ATTRS{model}="Yoyodyne Diskinator", DRIVERS="ahci"
.
Một cách khác để có được thông tin để sử dụng trong các quy tắc là với
udevadm info -q property -n /dev/sdb --export
Điều này in các giá trị thuộc tính thiết bị của biểu mẫu mà bạn có thể sử dụng như trong quy tắc udev.KEY=VALUE
ENV{KEY}=="VALUE"
Nếu thiết bị của bạn không có /dev
mục, thay vào đó, bạn có thể tham khảo thiết bị có đường dẫn bên dưới /sys
, ví dụ:
udevadm info -a -p /sys/block/sdb
(không phải là một ví dụ hữu ích trong trường hợp này - điều này hữu ích cho các thiết bị có danh mục không phổ biến và chưa có mục /dev
nào).
Khi bạn thay đổi quy tắc udev, chúng sẽ được đọc tự động; tuy nhiên, chúng chỉ được áp dụng cho các thiết bị sau đó được cắm vào hệ thống. Để áp dụng các quy tắc mới cho một thiết bị đã được kết nối, hãy sử dụng udevadm trigger
(với các tùy chọn để giới hạn ứng dụng cho một số thiết bị nhất định).
udevadm info -a -n /dev/sdb
?