답변:
나는 이것이 작동해야한다고 확신한다. 규칙을 편집 한 후 udev 규칙을 다시로드하셨습니까?
udevadm control --reload-rules && udevadm trigger
루트로.
KERNEL!="sdz*"
모든 것을 얻어야합니다 (sdz [1-9] 제외)
udevadm monitor
다음과 같이 명령을 루트로 제공 할 수 있습니다.
udevadm 모니터
규칙이 시작되면 표시됩니다.
udevadm monitor
udev 이벤트 만 표시하지만 해당 규칙이 실행 된 경우에는 표시되지 않습니다. 그러나 규칙을 트리거해야하는 이벤트를 찾을 수 있지만 규칙이 작동하는지 알 수 없습니다.
커널 3.0.35를 실행하고 있지만 다음과 같이 작동합니다.
장치의 경로를 얻으려면 다음과 같이 할 수 있습니다.
udevadm info --name /dev/sda1 --query all
필요한 것보다 많은 정보를 얻을 수 있지만 DEVPATH에 관심이 있습니다. 그런 다음 어떤 udev 규칙이 실행되는지 확인하려면 다음을 실행하십시오.
udevadm test DEVPATH
나는 이것이 실제로 규칙을 실행한다고 생각하지 않는다. 문서는 이것이 주어진 장치의 이벤트를 '시뮬레이션'한다고 말한다. 자세한 내용을 보려면 다음 매뉴얼 페이지를 확인하십시오. https://www.freedesktop.org/software/systemd/man/udevadm.html
루트와 같이 udev / systemd 버전 241 및 이와 유사한 경우 :
udevadm control --log-priority=debug
journalctl -f
또는 루트로 다시 영구적으로 만들려면 다음을 수행하십시오.
vi /etc/udev/udevd.conf
systemctl restart systemd-udevd
journalctl -f
추신 : 가장 빈번하지만 IMHO 오답 은 다음과 같습니다.
udevadm -d test / devices / where / is / my / device | & less
...하지만 이것은 많은 문제가 있습니다. 주요한 것들 :
where/is/my/device
? 지루하고 복잡하며 오류가 발생하기 쉽습니다.
최근 udev 버전 241 출력에 대한 이전 답변을 비교하면 예전 udevadm test
보다 적은 정보가 표시되는 것 같습니다.
udevadm -d test
단지 시뮬레이션입니다 ! 경고 할 때마다 :
이 프로그램은 디버깅 전용이며 RUN 키로 지정된 프로그램은 실행하지 않습니다. 일부 값이 다르거 나 시뮬레이션 실행에서 사용할 수 없기 때문에 잘못된 결과가 표시 될 수 있습니다.
udevadm test
새 규칙을 개발하기위한 것이며, 규칙이 깨지거나 누락되었거나 무시 된 문제를 해결하기위한 것이 아닙니다.
Raspberry Pi 3 B +와 동일한 문제가 발생했습니다. USB 저장 장치를 삽입 할 때 스크립트를 호출하려고했습니다. 규칙은 syslog에 기록되지 않으므로 어떤 규칙이 작동했는지 또는 어떤 규칙이 실패했는지 이해하기가 매우 어려워집니다.
그래서 나는 다음을 수행했다.
sudo /etc/init.d/udev restart
내가 확인했을 때 효과가있었습니다.
유용하거나 유용하지 않을 수있는 정보는 2 단계의 명령이 실행될 때까지 파일 시스템이 udev에 대해 읽기 전용이라는 것입니다.
udevadm test $(udevadm info --query=path --name=device_name)
관련 규칙을 인용하여 장치 플러그인에서 어떤 명령 이 실행 될지 알려줍니다 udev
. 예를 들어 :
# udevadm test /block/sdd
...
udev_rules_apply_to_event: PROGRAM '/sbin/multipath -c /dev/sdd' /lib/udev/rules.d/40-multipath.rules:11
...
SUBSYSTEMS=="usb"
. 즉 , 키에 값을 할당하는==
단일=
이 아닌 동등성을 테스트하는 double 입니다 .