![UDEV:如何在删除事件期间匹配 SYMLINK?](https://linux22.com/image/1117299/UDEV%EF%BC%9A%E5%A6%82%E4%BD%95%E5%9C%A8%E5%88%A0%E9%99%A4%E4%BA%8B%E4%BB%B6%E6%9C%9F%E9%97%B4%E5%8C%B9%E9%85%8D%20SYMLINK%EF%BC%9F.png)
我正在使用libusb
连接打印机。我正在编写一条规则,用于udev
在打印机断开连接时将其移除。我使用符号链接来指示设备。但是移除时,规则没有被触发。我该怎么办?
ATTRS{manufacturer}=="Zebra Technologies", ACTION=="add", RUN+="/usr/local/bin/reinitZebra.sh", SYMLINK+="usblp%k"
SYMLINK=="usblp%k", ACTION=="remove", RUN+="/usr/local/bin/reinitZebra.sh"
答案1
%k
(变量)不能用在规则匹配条件中。字符串替换
在编写可能处理多个类似设备的规则时,udev 的 printf 类字符串替换运算符非常有用。您可以简单地在任何赋值中包含这些运算符您的规则制定后,udev 将在执行时对其进行评估。
来源:编写 udev 规则作者:Daniel Drake (dsd)
直接使用相同的
add
条件(您选择了一条长路径):ATTRS{manufacturer}=="Zebra Technologies", ACTION=="remove", RUN+="/usr/local/bin/reinitZebra.sh"