最近我发现了这个ENV{REMOVE_CMD}
变量,它消除了ACTION=="remove"
在需要add
和的情况下使用匹配的需要remove
。我试图找到一些可以在 udev 规则中设置的其他有用变量的信息,但不幸的是我找不到任何有价值的东西。
有谁知道ENV
可以找到所有变量的列表?
看起来这些ENV
变量的形式非常自由并且绑定到 devices。唯一的限制强制是可以没有任何这些键的使用:ACTION,子系统DEVTYPE,主,次,DRIVER,索引序号,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"
Run Code Online (Sandbox Code Playgroud)
使用此命令,您可以找到更多环境变量:
grep -hrPo 'ENV{\K[^}]*(?=}=[^=])' /{etc,lib}/udev/rules.d | sort -u
Run Code Online (Sandbox Code Playgroud)
例如,考虑95-upower-hid.rules
文件。此文件设置UPOWER_BATTERY_TYPE
变量。没有其他规则使用这个文件,但UPower守护进程注册到 udevd 以进行添加/更改/删除事件。然后,当事件发生时,UPower 会专门查询此变量的设备,以确定它是否应将其视为常规鼠标、UPS 或 Unifying 接收器设备。
另一个(更有用的)示例是UDISKS_IGNORE
环境变量,可用于提示图形文件浏览器将设备隐藏在驱动器列表中。特别是对于 udisks2,您可以在udisks(8)手册页(使用 定位此man -K UDISKS_IGNORE
)中找到变量。