和我们成千上万的人一样,我希望在插入“这一个”U盘时运行特殊脚本。但我还希望在拔出它时运行某些东西 - 这真是太麻烦了。我确实在这里读到了有关正确匹配删除的问题:https://www.linuxquestions.org/questions/linux-desktop-74/udev-not-doing-remove-rules-841733/
所以。我的规则是:
ACTION=="add", SUBSYSTEMS=="scsi", ATTRS{model}=="USB2FlashStorage", ATTRS{vendor}=="Ut165 ", ENV{UDISKS_IGNORE}="1", ENV{PX2_KEY}="1", SYMLINK+="key%n", OWNER="root", RUN+="/root/bin/key.sh add"
ACTION=="remove", SUBSYSTEM=="bsg", ENV{PX2_KEY}=="1", RUN+="/root/bin/key.sh del"
添加一个可以完美运行,但删除则完全不行。我尝试使用 with 和w/o SUBSYSTEM (usb, block, scsi)
,带或不带正确ENV{ID_MODEL}, ID_VENDOR, ID_SERIAL, ID_F..._POOP
且无任何效果。在当前阶段,您可以看到我正在创建自己的符号链接 (key%n),并尝试将其与
KERNEL=="key*"
没有运气!您可能还注意到我正在设置自己的变量(PX2_KEY)并尝试通过此变量进行匹配,但是……同样没有运气……我做错了什么……也许我在规则顺序上遗漏了某些内容,但我确实尝试过将规则文件设置为 10-local 以及 99-local - 但没有成功。添加有效,删除无效。之所以设置,是因为这是我看到 udev 显示存在bsg
的第一个子系统PX2_KEY
udevadm monitor --udev --environment
删除完成后。我想也许我需要捕捉第一次出现的情况。但也尝试了不同的方法。
答案1
有用。
我不太聪明。问题是,在我想要运行的脚本中,我zenity
以--display=:0
root 身份运行,试图为不同的用户写入消息。
脚本在任何“记录”部分之前结束......