我有一个Ubuntu 8.04 LTS(服务器版),我需要编写一个udev规则,以便在插入USB拇指驱动器时采取行动。 但是,我需要根据驱动器的文件系统采取不同的操作。 我知道我可以使用ID_FS_TYPE环境variables来检查驱动器上的文件系统。
按照这里find的指示,我尝试一个虚拟的udev规则:
KERNEL!="sd[az][0-9]", GOTO="my_udev_rule_end" ACTION=="add", RUN+="/usr/bin/touch /tmp/test_udev_%E{ID_FS_TYPE}" ACTION=="add", ENV{ID_FS_TYPE}=="vfat", RUN+="/usr/bin/touch /tmp/test_udev_it_works" LABEL="my_udev_rule_end"
但是,当我插入带有vfat文件系统(应该触发这两个规则)的拇指驱动器时,我最终得到一个名为/tmp/test_udev_vfat的文件,这意味着第一个规则已成功触发, 并且 ID_FS_TYPE环境variables是“vfat “,但我没有其他文件,这意味着虽然我知道ID_FS_TYPE envvariables是”vfat“,但似乎无法检查它是否匹配。
我试着用googlesearch,但几乎每一个结果似乎都假设ENV{ID_FS_TYPE}=="vfat"起作用。 我也在Ubuntu 10.04 LTS服务器上testing了完全相同的udev规则,而且我也得到了相同的结果。
我可能错过了一些非常简单的东西,但我不明白。 有没有人看到我的udev规则,会阻止它匹配ENV {ID_FS_TYPE}有什么问题?
谢谢。
尝试在文件的开头添加以下行:
IMPORT {program} =“/ sbin / blkid -o udev -p%N”
你尝试添加这一行吗?
KERNEL ==“sd [az] []”,IMPORT {program} =“/ lib / udev / vol_id / dev /%k”
您可以在其他地方find“vol_id”。