udev 规则中可以设置哪些 ENV 变量?

udev 规则中可以设置哪些 ENV 变量?

最近我发现了这个变量,它消除了在您同时需要和 的情况下ENV{REMOVE_CMD}使用匹配的需要。我试图找到一些有关可以在 udev 规则中设置的其他有用变量的信息,但不幸的是我找不到任何有价值的东西。ACTION=="remove"addremove

有谁知道ENV可以找到所有变量的列表吗?

答案1

看起来ENV变量的形式非常自由并且绑定到设备。唯一强制执行的限制是这些键都不能是使用:操作、子系统、DEVTYPE、主要、次要、驱动程序、IFINDEX、DEVNAME、DEVLINKS、DEVPATH、标签。

除此之外,环境变量的解释留给其他规则和程序。用于grep -rni 'ENV{' /{lib,etc}/udev/rules.d查找环境变量的使用者和提供者。在您的具体REMOVE_CMD情况下,该文件/lib/udev/rules.d/50-udev-default.rules负责处理此操作:

# run a command on remove events
ACTION=="remove", ENV{REMOVE_CMD}!="", RUN+="$env{REMOVE_CMD}"
ACTION=="remove", GOTO="default_end"

使用此命令您可以找到更多环境变量:

grep -hrPo 'ENV{\K[^}]*(?=}=[^=])' /{etc,lib}/udev/rules.d | sort -u

作为示例,请考虑该95-upower-hid.rules文件。该文件设置UPOWER_BATTERY_TYPE变量。没有其他规则使用此文件,但优能守护进程向 udevd 注册以添加/更改/删除事件。然后,当事件发生时,UPower 会专门向设备查询该变量,以确定是否应将其视为常规鼠标、UPS 或 Unifying 接收器设备。

另一个(更有用的)示例是UDISKS_IGNORE环境变量,可用于提示图形文件浏览器隐藏驱动器列表中的设备。特别是对于udisks2,您可以在以下位置找到变量优盘(8)手册页(使用 找到此页man -K UDISKS_IGNORE)。

相关内容