Udevルールはコマンド(または同様のもの)の出力と一致します。

Udevルールはコマンド(または同様のもの)の出力と一致します。

私は、1つまたは2つのSilicon Motion SM501グラフィックスカードを搭載したコンピュータに展開するための一般的なudevルールを作成しています。現在のルールは次のとおりです。

TAG=="seat", ENV{ID_FOR_SEAT}=="usb-pci-*-usb-*_[34]", ENV{ID_SEAT}="seat0", TAG-="master-of-seat"

私はこの規則が次の場合にのみ適用されることを望みます。一つカードが存在します。つまり、コマンドがlspci | grep -c SM501出力される場合です1。この動作を達成するためにルールをどのように変更できますか?

答え1

それは問題ではありません。解決策を見つけたと思います。最後RESULTの呼び出しPROGRAMの出力と一致するudevというセクションがあることがわかりました。だから私はルールを次のように更新しましたが、うまくいくようです。

TAG=="seat", ENV{ID_FOR_SEAT}=="usb-pci-*-usb-*_[34]", PROGRAM="/bin/sh -c '/usr/bin/lspci | /bin/grep -c SM501'", RESULT=="1", ENV{ID_SEAT}="seat0", TAG-="master-of-seat"

/bin/sh -c '...'ラッパーを入れるようにこのルールを改善できますかPROGRAM

関連情報