Ketika perangkat baru muncul, udev diberitahu. Ini biasanya membuat file perangkat di bawah /dev
berdasarkan pada aturan bawaan¹. Anda dapat mengganti aturan ini untuk mengubah lokasi file perangkat atau menjalankan program yang sewenang-wenang. Berikut adalah contoh aturan udev tersebut:
KERNEL=="sd*", ATTRS{vendor}=="Yoyodine", ATTRS{serial}=="123456789", NAME="keepass/s%n", RUN+="/usr/local/sbin/keepass-drive-inserted /dev/%k%n"
The NAME=
direktif mengubah lokasi file perangkat, saya termasuk untuk tujuan ilustrasi tapi itu mungkin tidak berguna untuk kasus penggunaan Anda. The ATTRS
aturan mengidentifikasi perangkat; berjalan udevinfo -a -n /dev/sdz
ketika drive tersedia /dev/sdz
untuk melihat atribut apa yang dimilikinya. Berhati-hatilah karena Anda hanya dapat menggunakan ATTRS
aturan dari satu bagian udevinfo
input (selain itu, Anda dapat menggunakan ATTR
aturan dari bagian awal). Lihat Memahami keluaran dari `udevadm info -a -n / dev / sdb` untuk latar belakang lebih lanjut. Aturan ini masuk ke file yang disebut sesuatu seperti /etc/udev/rules.d/local-storage-keypass.rules
.
Masukkan perintah yang ingin Anda jalankan dalam skrip yang diberikan dalam RUN
direktif. Sesuatu seperti:
#!/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' &
Jika Anda mengalami kesulitan menjalankan program GUI dari skrip yang dipicu dari udev, lihat Dapatkah saya meluncurkan program grafis di desktop pengguna lain sebagai root?
¹ Tidak pada sistem modern di mana /dev
ada di udevtmpfs.
udevadm info -a -n /dev/sdX
, Anda tidak dapat mencocokkan berdasarkan beberapa leluhur. Anda hanya dapat mencocokkan berdasarkan data dari perangkat itu sendiri, dan satu leluhur tunggal. Ini tercakup dalamman 7 udev
, tetapi komentar kecil dengan mudah diabaikan.