我只想查看在我的系统中添加和删除的所有设备,并查看它们的 USB 供应商 ID、产品 ID 和修订版以及其他相关信息。我怎样才能在 Linux 中做到这一点?是否有我可以使用的日志文件,tail -f
或者这是否需要其他内容?
don*_*sti 12
你可以这样做udevadm
:
udevadm monitor --subsystem-match=usb --property
Run Code Online (Sandbox Code Playgroud)
或者
udevadm monitor --subsystem-match=usb --property --udev
Run Code Online (Sandbox Code Playgroud)
仅过滤udev
事件。如果你想要grep
一个特定的属性,你将不得不取消缓冲udevadm
输出(使用stdbuf
, script
, unbuffer
...等工具):
stdbuf -i 0 -o 0 -e 0 udevadm monitor --subsystem-match=usb --property --udev | grep DEVPATH
Run Code Online (Sandbox Code Playgroud)
或者
script -q /dev/null -c "udevadm monitor --subsystem-match=usb --property --udev" | grep PRODUCT
Run Code Online (Sandbox Code Playgroud)
或者
unbuffer udevadm monitor --subsystem-match=usb --property --udev | grep -E 'ID_VENDOR_ID|ID_MODEL_ID'
Run Code Online (Sandbox Code Playgroud)
此信息出现在内核日志中——通常在/var/log/kern.log
、 或/var/log/syslog
或其他一些文件中(这取决于您的系统日志配置,不同的发行版有不同的默认值)。
如果您想要预先过滤的内容,您可以添加 udev 规则。创建一个/etc/udev/rules.d/tkk-log-usb.rules
包含以下内容的文件:
SUBSYSTEM=="usb", RUN+="/usr/local/sbin/tkk-usb-event"
Run Code Online (Sandbox Code Playgroud)
程序的环境填充了许多描述设备的变量,包括:
ACTION
(add
或remove
)DEVICE
是设备的路径,如果你想访问它ID_MODEL_ID
并ID_VENDOR_ID
包含型号和供应商 ID,ID_MODEL
并ID_VENDOR
包含相应的文本ID_SERIAL
包含设备的序列号(如果有)