udev,如何防止进一步运行规则?

hum*_*ace 4 configuration udev

是否可以(如果可以的话)告诉 udev 停止为某个设备执行进一步的规则?

我知道通过 udev 文件的字母顺序命名有一个规则的顺序/顺序。因此,较早地*.rules可能希望进一步阻止(即按照后来发生的规则的顺序)执行似乎是合乎逻辑的。

让我们假设我有一个 USB 内存介质,它是通过 udev 和它的 RUN+ 脚本已经安装的,我现在不喜欢系统中的任何其他规则尝试(并且可能失败)再次安装设备!

为了便于回复,我还想包括一个例子:让规则是这样的:

# 在文件 30.myusb.rules 中
ACTION=="add", SUBSYSTEM=="usb", ATTRS{idVendor}=="1f75", ATTRS{idProduct}=="0902", RUN+="/bin/mount.30.1f75.0902.sh"

现在我希望这更进一步(因为 31 > 30)规则不会发生

# 在文件 31.myusb.rules 中
ACTION=="add", SUBSYSTEM=="usb", ATTRS{idVendor}=="1f75", ATTRS{idProduct}=="0902", RUN+="/bin/mount.31.1f75.0902.sh"

用于使udev能够判断规则是否适用于两个规则的“过滤器” ,但我希望 31.myusb.rules 规则永远不会发生。

因此,我正在寻找一种以30.myusb.rules这种伪代码建议的方式进行 tweek 的方法

# 在文件 30.myusb.rules 中
ACTION=="add", SUBSYSTEM=="usb", ATTRS{idVendor}=="1f75", ATTRS{idProduct}=="0902", RUN+="/bin/mount.30.1f75.0902.sh"
ACTION=="add", SUBSYSTEM=="usb", ATTRS{idVendor}=="1f75", ATTRS{idProduct}=="0902", STOP_FURTHER_RULES_WITH_THIS_FILTER

Gil*_*il' 5

GOTO一旦应用了规则,您就可以在规则中使用跳到标签。如果标签位于规则的最后,则跳过所有后续规则。

所以在30.myusb.rules

ACTION=="add", SUBSYSTEM=="usb", ATTRS{idVendor}=="1f75", ATTRS{idProduct}=="0902", RUN+="/bin/mount.30.1f75.0902.sh", GOTO="myusb_end"
Run Code Online (Sandbox Code Playgroud)

最后31.myusb.rules

LABEL="myusb_end"
Run Code Online (Sandbox Code Playgroud)

或使用GOTO="very_end", 并放入LABEL="very_end"最后加载的文件 ( /etc/udev/rules.d/zzzzzzzz.rules)。