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

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

假设在 Linux 机器上同时存在 SATA 和 USB 设备,如果它们都被正确检测到,您如何知道特定设备(sda1/sdb1)是 USB 设备还是 SATA 设备。注意:设备需要手动安装。注意:dmesg 已清除。我们不能使用 /var/log/messages,因为它也已清除。

问题是:是否有其他方法,比如从 /proc 或任何其他命令,我们可以知道特定设备(sda1/sdb1)是 SATA 还是 USB?

谢谢!

答案1

/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 驱动器报告自己是可移动的,因此它可能不是确定的。

相关内容