모든 udev 규칙을 나열하시겠습니까(예: 장치용)?

모든 udev 규칙을 나열하시겠습니까(예: 장치용)?

모든 udev 규칙을 나열하는 방법을 알고 싶습니다.

*.rules이 디렉토리의 파일에 줄(한 줄 = 규칙 한 개)로 저장될 수 있다는 것을 알고 있습니다.

/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.

관련 정보