我有以下 udev 规则 ( /etc/udev/rules.d/97-automounter.rules
),它适用于操作“删除”,但不适用于操作“添加”。如果手动运行,操作“添加”的脚本可以工作。
# rule: mount/umount /dev/vd* when EBS volume is attached.
ENV{DEVNAME}=="/dev/vd[b-z]", ACTION=="add", SUBSYSTEMS=="block", RUN+="/usr/local/sbin/udev-automounter.sh %k"
ENV{DEVNAME}=="/dev/vd[b-z]", ACTION=="remove", SUBSYSTEMS=="block", RUN+="/usr/local/sbin/udev-autounmounter.sh %k"
不确定如何纠正或调试。任何帮助都很好。
答案1
看起来无论是添加还是删除,调用都是相同的:
"/usr/local/sbin/udev-autounmounter.sh %k"
我不确定 %k 调用的是什么,但那很可能是 dev 位置。那么,您需要脚本来知道它是否需要运行添加块或删除代码块。如果需要,请拆分添加部分并创建 udev-add.sh,并将删除部分复制到脚本 udev-rem.sh,然后调整那里的命令,以便它调用 udev-add.sh 进行添加部分,调用 udev-rem.sh 进行删除。
这应该可以让你开始。否则,你需要一种方法来告诉脚本调用添加子例程来添加,调用不同的单独子例程来删除。如果你必须使用相同的脚本,那么你可以使用一个变量,这样当你删除它时,它也会将变量更改为某个值,因此当脚本运行时,它会检查变量并说嘿,如果这个变量说删除,我就运行这部分,如果没有设置变量,或者如果它被设置为其他值,我就只运行添加部分。
该命令现在的样子是在添加和删除设备时运行相同的设备添加子程序。