디렉터리에 드라이버 값을 설정하여 USB 장치를 바인딩/바인딩 해제하는 bash 스크립트가 있습니다 /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 장치의 경우 drivers 디렉터리에 나타나며 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