udevルールにどのENV変数を設定できますか?

udevルールにどのENV変数を設定できますか?

最近、私はENV{REMOVE_CMD}すべてのANDが必要な状況でmatchを使用する必要がないこの変数を見つけました。 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の場合は、次の変数を見つけることができます。USB(8)マンページ(このページを見つけるために使用man -K UDISKS_IGNORE

関連情報