linux下查找usb设备命令是哪个,关于bash:查找哪个驱动器对应于Linux中的哪个USB大容量存储设备...

我有几个USB大容量存储闪存驱动器连接到Ubuntu Linux计算机(Ubuntu 10.04.1,内核2.6.32-25-386),我需要以编程方式区分它们(如果可能的话,从bash,但我不害怕编译或者 - 我需要找到哪个块设备对应哪个物理设备(例如/dev/sdb1 - > USB端口1中的设备;在我的情况下,一个设备?一个卷)。

换句话说,我知道我有三个硬件设备插入USB端口;它们中的每一个都作为USB大容量存储设备显示在系统中(如lsusb所示),创建为块设备(/dev/sdb1)并由UUID(/media/1234-5678)自动安装。

USB device               block device    mountpoint

USB device in port 2.2 /dev/sdb1   /media/1234-5678

我不是想找到块设备和mountpoint之间的关系;我试图找到块设备和USB设备之间的关系,有没有办法?

为什么?磁盘上会有一些写入,完成时间不可预测。我需要给操作员一些指示,例如"你现在可以移除端口2中的磁盘(左起第二个)"。我发现哪个物理端口对应于该特定机器上的哪个端口号,并且从挂载点查找块设备很简单;现在,我无法将逻辑USB端口映射到阻止设备。

我可以看到带有lsusb的磁盘:

Bus 001 Device 058: ID 067b:2517 Prolific Technology, Inc. Mass Storage Device

Bus 001 Device 060: ID 067b:2517 Prolific Technology, Inc. Mass Storage Device

Bus 001 Device 061: ID 067b:2517 Prolific Technology, Inc. Mass Storage Device

我可以看到它们被挂载(通过它们的UUID):

/dev/sdb1 on /media/BC88-15C4 type vfat

/dev/sdc1 on /media/AE54-65AA type vfat

/dev/sdd1 on /media/58D2-FED1 type vfat

现在,所有驱动器都是来自同一制造商的相同型号,因此我无法通过它区分它们,我无法保证它们将按特定顺序插入。

我找到了/sys/bus/usb/devices(USB设备列表),但它似乎与我从lsusb获得的数据相同 - 我没有看到那里的磁盘映射。

还有/sys/block/sdb和/sys/block/sdb/sdb1(块设备及其第一个分区;类似于sdc和sdd),但同样,我看不到设备的映射。

(在XP中尝试了同样的事情,在需求发生变化时放弃了工作;需求改回来了,但在此期间我们转移到了Linux:stackoverflow.com/questions/733206/)

我有眼睛,但我没有看到。 解决了(/ sys / block / sdX是USB设备的符号链接)!

我不确定实现了哪个内核版本,但/sys/block/*条目是设备的符号链接。

换句话说,/sys/block/sdb符号链接到不同的目录,其名称包含USB设备ID。

$ file /sys/block/sdb

/sys/block/sdb: symbolic link to `../devices/pci0000:00/0000:00:02.1/usb1/1-1/1-1.1/1-1.1:1.0/host31/target31:0:0/31:0:0:0/block/sdb'

USB version and port here---^^^^^

1-1.1是有趣的部分,表示usb1-port 1.device 1。 插入集线器时,会添加另一个级别:1-2.3.1,表示usb1-port 2.port 3.device 1。

伪代码:

get partition name # e.g. /dev/sdb1

get disk name # that would be /dev/sdb

get your basename # sdb

see where /sys/block/$your_basename points to # e.g. ../devices/blah/blah/1-2.1/blah

get the longest substring matching"\d-\d+(.\d+)*"  # e.g. 1-2.1

that is the device id you want

/sys/bus/usb/devices/$device_id/ has all kinds of information about it

the ID corresponds to hardware USB ports

bash中的工作示例脚本。

我使用的路径:

/sys/bus/usb/drivers/usb-storage/4-1:1.0/host4/target4:0:0/4:0:0:0/block/sda

所以你可以看到usb总线4,端口1连接usb存储/ dev / sda

这看起来很有用,谢谢!

我就是这样做的。

lsusb -v显示所有设备磁盘获得的一个英制数字记录它们

ls -l /dev/disk | grep [iserial]

/dev/disk中的所有内容都是符号链接,因此请按照符号链接查看设备。

不能这样做,对不起:ls -l devdisk,在我的情况下,包含目录by-id by-label by-path by-uuid; lsusb -v给了我像iSerial 3的结果,我似乎无法通过上述目录中的任何符号链接来匹配它。 此外,devdiskby-id中报告的序列似乎对SATA磁盘有效,但对于我手边的USB设备是假的:usb-Generic_USB_12345678901234567890-0:0 -> ....sde(字面意思是,序列1-0重复两次)。 Kubuntu 12.04,内核3.2.0-32

你不能使用磁盘标签吗?

http://ubuntuforums.org/showthread.php?t=322973

谢谢,但我已经解决了这一步。 我可以从挂载点映射到块设备 - 我正在寻找一种方法将块设备映射到USB设备,从而映射到硬件设备。 编辑回答澄清。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值