Udev
udev 規則中可以設置哪些 ENV 變數?
最近我發現了這個
ENV{REMOVE_CMD}
變數,它消除了在你需要andACTION=="remove"
的情況下使用 match 的需要。我試圖找到可以在 udev 規則中設置的其他有用變數的一些資訊,但不幸的是我找不到任何有價值的東西。add``remove
有誰知道
ENV
可以找到所有變數的列表?
看起來這些
ENV
變數是非常自由的形式並且綁定到 devices。唯一強制的限制是不能使用這些鍵:ACTION、SUBSYSTEM、DEVTYPE、MAJOR、MINOR、DRIVER、IFINDEX、DEVNAME、DEVLINKS、DEVPATH、TAGS。除此之外,環境變數的解釋留給其他規則和程序。用於
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
變數。沒有其他規則使用此文件,但UPower守護程序註冊到 udevd 以進行添加/更改/刪除事件。然後,當事件發生時,UPower 會專門向設備查詢此變數,以確定是否應將其視為普通滑鼠、UPS 或 Unifying 接收器設備。另一個(更有用的)範例是
UDISKS_IGNORE
環境變數,可用於提示圖形文件瀏覽器在驅動器列表中隱藏設備。特別是對於 udisks2,您可以在udisks(8)手冊頁中找到變數(使用 定位man -K UDISKS_IGNORE
)。