我正在编写一个通用的 udev 规则,用于部署到安装了一个或两个 Silicon Motion SM501 显卡的计算机。这是当前的规则:
TAG=="seat", ENV{ID_FOR_SEAT}=="usb-pci-*-usb-*_[34]", ENV{ID_SEAT}="seat0", TAG-="master-of-seat"
我希望当且仅当确实存在时应用此规则一卡存在,即如果命令lspci | grep -c SM501
输出1
。我怎样才能改变我的规则来实现这种行为?
答案1
没关系。我想我已经找到解决方案了。我刚刚发现有一个名为 udev 的节,RESULT
它与上次PROGRAM
调用的输出相匹配。所以我将我的规则更新为以下规则,它似乎有效:
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
?