Linux – Udev rule is not working

linuxudev

I use Gentoo.
I write a udev rule.

localhost biergaizi # cat /etc/udev/rules.d/91-change-schduler.rules 
#SUBSYSTEMS=="usb", KERNEL=="sd??", ACTION=="add", RUN+="echo deadline > /sys/block/%k/queue/scheduler" 
ACTION=="add", KERNEL=="sd??", RUN+="/usr/local/bin/USB" 

localhost biergaizi # cat /usr/local/bin/USB 
#!/bin/bash 
echo 'Hello World!' >>"/home/biergaizi/udev.out" 
exit 

localhost biergaizi # ls -l /usr/local/bin/USB 
-rwxr-xr-x 1 root root 66 10月  1 11:55 /usr/local/bin/USB 

But when I plugin a USB device, udev doesn't run the script.
Why?

Best Answer

KERNEL=="sd??" matches to the device with a partition table (/dev/sda1) only. If your device doesn't have a partition table (/dev/sda), the rule isn't working.

You can change your rule to KERNEL=="sd?" to detect all kind of device.