เมื่ออุปกรณ์ใหม่ปรากฏขึ้น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
แต่เป็นความคิดเห็นเล็ก ๆ ที่ถูกมองข้ามได้ง่าย