linux - udev 规则使用链接名称中的 ATTRS{serial} 为 USB 设备生成符号链接
问题描述
/dev
我有一个 udev 规则,可以根据它们的序列号为我的 USB 设备生成符号链接(我有多个其他相同的设备,但需要可重现的设备端点)。
目前我需要为每个新的序列号添加一个规则,如下所示:
SUBSYSTEM=="tty", ATTRS{idVendor}=="10c4", ATTRS{idProduct}=="ea60", ATTRS{serial}=="S101", SYMLINK+="ttyS101"
SUBSYSTEM=="tty", ATTRS{idVendor}=="10c4", ATTRS{idProduct}=="ea60", ATTRS{serial}=="S102", SYMLINK+="ttyS102"
...
我正在寻找一种使用单个规则执行此操作的方法,所有可动态访问的是%k
、%n
和%c
,但我发现无法访问任何其他值。使用PROGRAM=""
可能是一种方式,但我将如何从那里访问 ATTRS?
我试过这个:
SUBSYSTEM=="tty", ATTRS{idVendor}=="10c4", ATTRS{idProduct}=="ea60", ATTRS{serial}=="S101", PROGRAM="/bin/sh -c 'udevadm info /dev/%k | grep ID_SERIAL_SHORT= | cut -d= -f 2'" SYMLINK+="tty%c"
但它看起来/dev/%k
在程序运行时不可用,所以这也不起作用。
有什么方法可以ATTRS{serial}
用于我的SYMLINK+=""
吗?
解决方案
看起来您正在使用 USB 串行端口。您应该更容易通过 中的符号链接访问这些设备/dev/serial/by-id
。不需要制定 udev 规则。
推荐阅读
- algorithm - 如何生成具有最大相互感知差异的颜色?
- google-bigquery - bigquery 命令行在单个 sql 文件中执行多个查询
- angular - 当页面以角度 7 重定向时得到 405
- unix - 使用 awk 命令根据第一个匹配列合并两个文件
- javascript - 如何在javascript中模拟回车键按钮
- python - 按值提取并使用python将其放在列表的开头
- java - 如何使用 Goertzel 算法检测频率
- java - JavaFx:用加/乘/双向绑定数字
- kubernetes - kubectl 使用 OR 运算符按标签获取资源
- ios - CollectionViewCell 中的 YTSwiftyPlayer