检测特定设备是否是USB / SATA除了dmesg输出

假设在一台linux机器上同时存在SATA和USB设备,并且如果它们全部检测正常,您如何知道特定设备(sda1 / sdb1)是USB设备还是SATA设备? 注意:设备需要手动安装。 注:dmesg已被清除。 我们不能使用/ var / log / messages来清除。

问题是:有没有其他的方法,从/ proc或其他命令我们知道特定设备(sda1 / sdb1)是SATA或USB?

谢谢!

您可以从/sys虚拟文件系统获取该信息。

运行find /sys -name \*sd[ab]\* 。 我站的一些线路是:

 /sys/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.1/2-1.1:1.0/host69/target69:0:0/69:0:0:0/block/sdb /sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda 

sdb中有“usb”,sda没有,所以USB驱动是sdb。

另一个你可以得到的信息是从

 cat /sys/class/block/sda/removable cat /sys/class/block/sdb/removable 

文件。 如果文件内容为0,则设备不可移动,因此它不能是外部USB驱动器。 一些SATA驱动器报告自己可移动,所以它可能不是确定的。