Bash 检查 USB 设备是否绑定在 /sys 中

Bash 检查 USB 设备是否绑定在 /sys 中

我有一个 bash 脚本,它通过在目录中设置驱动程序的值来绑定/取消绑定 USB 设备/sys。以下是命令:

'X-Y.Z' 是设备的地址。

绑定设备: sh -c "echo 'X-Y.Z' > /sys/bus/usb/drivers/usb/bind"

解绑设备: sh -c "echo 'X-Y.Z' > /sys/bus/usb/drivers/usb/unbind"

完成后,我需要我的脚本来检查设备是否已绑定。

/sys/bus/usb/drivers/usb/bind我没有找到读取和 文件的方法/sys/bus/usb/drivers/usb/unbind。有没有可以读取这些文件的命令?

有没有其他方法可以让我的 bash 脚本仅通过设备格式地址就知道设备已绑定X-Y.Z

答案1

当您绑定设备时,您会发现它列在您进行绑定的目录中。但您也可以查看该链接是否/sys/bus/usb/devices/X-Y.Z/driver存在,在这种情况下它指向正在使用的驱动程序。

例如,对于3-2.4:1.0当前绑定到 ftdi_sio 驱动程序的 ftdi 串行 USB 设备,它出现在驱动程序目录中,并且有一个来自 devices 目录的链接:

$ ls /sys/bus/usb/drivers/ftdi_sio/
3-2.4:1.0  bind  uevent  unbind
$ ls -l /sys/bus/usb/devices/3-2.4:1.0/
...
lrwxrwxrwx 1 root root    0 Aug 16 18:33 driver -> ../../../../../../../../bus/usb/drivers/ftdi_sio

解除绑定后,目录中不再存在,驱动程序链接也不存在:

$ sudo sh -c 'echo 3-2.4:1.0 >/sys/bus/usb/drivers/ftdi_sio/unbind '
$ ls /sys/bus/usb/drivers/ftdi_sio/
bind  uevent  unbind
$ ls -l /sys/bus/usb/devices/3-2.4:1.0/driver
/bin/ls: cannot access /sys/bus/usb/devices/3-2.4:1.0/driver: No such file or directory

相关内容