Gdy pojawi się nowe urządzenie, udev jest powiadamiany. Zwykle tworzy plik urządzenia w /devoparciu o wbudowane reguły¹. Możesz zastąpić te reguły, aby zmienić lokalizację pliku urządzenia lub uruchomić dowolny program. Oto przykładowa taka zasada udev:
KERNEL=="sd*", ATTRS{vendor}=="Yoyodine", ATTRS{serial}=="123456789", NAME="keepass/s%n", RUN+="/usr/local/sbin/keepass-drive-inserted /dev/%k%n"
NAME=Dyrektywa zmienia lokalizację pliku urządzenia, włączyłem go do celów ilustracyjnych, ale nie jest to użyteczne dla przypadku użycia. Te ATTRSzasady identyfikacji urządzenia; uruchom, udevinfo -a -n /dev/sdzgdy dysk będzie dostępny, /dev/sdzaby zobaczyć, jakie ma atrybuty. Uważaj, że możesz używać ATTRSreguł tylko z jednej sekcji danych udevinfowejściowych (dodatkowo możesz używać ATTRreguł z sekcji początkowej). Zobacz Zrozumienie wyniku działania `udevadm info -a -n / dev / sdb`, aby uzyskać więcej tła. Ta reguła przechodzi do pliku o nazwie coś takiego /etc/udev/rules.d/local-storage-keypass.rules.
Umieść polecenia, które chcesz uruchomić, w skrypcie podanym w RUNdyrektywie. Coś jak:
#!/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' &
Jeśli masz problemy z uruchomieniem programu GUI ze skryptu wywołanego przez udev, zobacz Czy mogę uruchomić program graficzny na pulpicie innego użytkownika jako root?
¹ Nie w nowoczesnych systemach, w których /devdziała udevtmpfs.
udevadm info -a -n /dev/sdX, nie można dopasowywać na podstawie wielu przodków. Możesz dopasować tylko na podstawie danych z samego urządzenia i jednego przodka. Jest to omówioneman 7 udev, ale jest to mały komentarz, który można łatwo przeoczyć.