Yeni bir aygıt göründüğünde, udev bilgilendirilir. Normalde /dev
yerleşik kurallara göre altında bir aygıt dosyası oluşturur¹ . Aygıt dosyasının konumunu değiştirmek veya isteğe bağlı bir program çalıştırmak için bu kuralları geçersiz kılabilirsiniz. İşte böyle bir udev kuralı örneği:
KERNEL=="sd*", ATTRS{vendor}=="Yoyodine", ATTRS{serial}=="123456789", NAME="keepass/s%n", RUN+="/usr/local/sbin/keepass-drive-inserted /dev/%k%n"
NAME=
Yönerge ben açıklama amacıyla bunu dahil ama muhtemelen sizin kullanım örneği için kullanışlı değildir, cihaz dosyasının konumunu değiştirir. ATTRS
Kurallar cihazı tanımlamak; udevinfo -a -n /dev/sdz
sürücü /dev/sdz
hangi özelliklere sahip olduğunu görmek için kullanılabilir olduğunda çalıştırın . Yalnızca girişin ATTRS
tek bir bölümündeki kuralları kullanabileceğinize dikkat edin udevinfo
(buna ek ATTR
olarak ilk bölümdeki kuralları da kullanabilirsiniz ). Daha fazla arka plan için bkz . "Udevadm info -a -n / dev / sdb" çıktısını anlama . Bu kural gibi bir dosyaya girer /etc/udev/rules.d/local-storage-keypass.rules
.
Çalıştırmak istediğiniz komutları RUN
yönergede verilen komut dosyasına yerleştirin . Gibi bir şey:
#!/bin/sh
set -e
if [ -d /media/keypass-drive ]; then
[ "$(df -P /media/keypass-drive | awk 'NR==2 {print $1}')" = "$(df -P /media | awk 'NR==2 {print $1}')" ]
else
mkdir /media/keypass-drive
fi
mount "$1" /media/keypass-drive
su ereon -c 'keypass2' &
Udev tarafından tetiklenen bir komut dosyasından bir GUI programı çalıştırmakta sorun yaşıyorsanız, bkz . Başka bir kullanıcının masaüstünde kök olarak bir grafik programı başlatabilir miyim?
¹ Değil Modern sistemlerde nerede /dev
udevtmpfs üzerindedir.
udevadm info -a -n /dev/sdX
, birden fazla ataya dayalı olarak eşleşemezsiniz. Yalnızca cihazın kendisinden gelen verilere ve tek bir ataya göre eşleştirebilirsiniz. Bu kapsam dahilindedirman 7 udev
, ancak kolayca gözden kaçan küçük bir yorumdur.