我有一个 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