Udev

udev 規則中可以設置哪些 ENV 變數?

  • June 11, 2015

最近我發現了這個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)。

引用自:https://unix.stackexchange.com/questions/208660