เมื่ออุปกรณ์ใหม่ปรากฏขึ้นudevจะได้รับแจ้ง โดยปกติจะสร้างไฟล์อุปกรณ์ภายใต้/devกฎในตัว¹ คุณสามารถแทนที่กฎเหล่านี้เพื่อเปลี่ยนตำแหน่งไฟล์อุปกรณ์หรือเรียกใช้โปรแกรมโดยพลการ นี่คือตัวอย่างกฎ udev เช่น:
KERNEL=="sd*", ATTRS{vendor}=="Yoyodine", ATTRS{serial}=="123456789", NAME="keepass/s%n", RUN+="/usr/local/sbin/keepass-drive-inserted /dev/%k%n"
NAME=สั่งเปลี่ยนแปลงสถานที่ตั้งของแฟ้มอุปกรณ์ที่ผมรวมไว้เพื่อวัตถุประสงค์ภาพประกอบ แต่มันอาจจะไม่เป็นประโยชน์สำหรับกรณีการใช้งานของคุณ ATTRSกฎระบุอุปกรณ์; ทำงานudevinfo -a -n /dev/sdzเมื่อไดรฟ์พร้อมใช้งาน/dev/sdzเพื่อดูว่ามีคุณสมบัติใดอยู่ ระวังว่าคุณสามารถใช้ATTRSกฎจากส่วนเดียวของudevinfoอินพุต (นอกจากนี้คุณสามารถใช้ATTRกฎจากส่วนเริ่มต้น) ดูทำความเข้าใจกับเอาต์พุตของข้อมูล `udevadm -a -n / dev / sdb`สำหรับพื้นหลังเพิ่มเติม กฎนี้เข้าสู่ไฟล์ที่มีลักษณะคล้าย/etc/udev/rules.d/local-storage-keypass.rulesกัน
ใส่คำสั่งที่คุณต้องการเรียกใช้ในสคริปต์ที่กำหนดในRUNคำสั่ง สิ่งที่ต้องการ:
#!/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' &
หากคุณมีปัญหาในการเรียกใช้โปรแกรม GUI จากสคริปต์ที่ถูกเรียกจาก udev ให้ดูที่ฉันสามารถเปิดโปรแกรมกราฟิกบนเดสก์ท็อปของผู้ใช้รายอื่นได้หรือไม่
¹ ไม่ได้อยู่ในระบบที่ทันสมัยซึ่ง/devอยู่บน udevtmpfs
udevadm info -a -n /dev/sdXคุณจะไม่สามารถจับคู่โดยอิงจากบรรพบุรุษหลาย ๆ คน คุณสามารถจับคู่ตามข้อมูลจากอุปกรณ์และบรรพบุรุษเดียวเท่านั้น สิ่งนี้ถูกกล่าวถึงman 7 udevแต่เป็นความคิดเห็นเล็ก ๆ ที่ถูกมองข้ามได้ง่าย