在 Linux 中查找连接到系统的外部和内部设备

在 Linux 中查找连接到系统的外部和内部设备

可能重复:
在 Linux 中查找连接到系统的外部和内部设备

我如何通过终端找到哪些设备是外部的,哪些是内部的。

外部设备是指连接到 USB 端口的设备。例如,USB 驱动器、便携式 USB 硬盘等

内部是指内部连接的设备。例如,SATA 硬盘等。

谢谢

答案1

您可以使用lsusb它来列出 USB 设备、lspci列出 PCI 设备以及lspcmcia列出 PCMCIA 设备。

如果你只关心磁盘类型的设备,你也可以查看/dev/disk/by-id。设备的链接名称以连接类型开头(usb、ata、scsi-sata 等)。

答案2

这通常是不可能的 - 许多机器都有内部 USB 设备(蓝牙接口和指纹读取器等通常以这种方式实现),并且可能有外部 SATA 设备(我现在使用的笔记本电脑有一个 eSATA 端口)。SCSI 设备也可以是内部或外部的。

答案3

块设备具有“可移动”属性。虽然这并不完全对应于内部/外部(例如,内部 CDROM 是“可移动”的,而 eSATA 驱动器可能被错误分类),但它可能足以满足您的目的。

$ cd /系统/块/
$ grep ^ */可移动
dm-0/可移动:0
dm-1/可移动:0
dm-2/可移动:0
dm-3/可移动:0
dm-4/可移动:0
dm-5/可拆卸:0
dm-6/可拆卸:0
dm-7/可移动:0
dm-8/可拆卸:0
fd0/可移动:1
hdc/可移动:1
loop0/可移除:0
环路 1/可拆卸:0
环路2/可拆卸:0
环路3/可拆卸:0
环路4/可拆卸:0
环路5/可拆卸:0
loop6/可拆卸:0
loop7/可拆卸:0
md0/可移动:0
md1/可移动:0
sda/可移动:0
sdb/可移动:0
sdc/可移动:0
sdd/可移动:0
sde/可移动:1
自卫队/可移动:1
sdg/可移动:1
sdh/可移动:1
sdi/可移动:1

答案4

这是一个使用的小脚本示例哈尔,如果你有的话。

store=$(hal-find-by-capability --capability "storage")
for s in $store
do
  r=$(hal-get-property --udi ${s} --key storage.removable)
  if [ $r = "true" ]; then
    hal-get-property --udi ${s} --key info.product
    prod=$(hal-get-property --udi ${s} --key info.product)
    type=$(hal-get-property --udi ${s} --key storage.drive_type)
    device=$(hal-get-property --udi ${s} --key block.device)
    mdir=$(awk -vdev="$device" '$0~dev{print $2}' /etc/mtab)
    echo Product: ${prod}
    echo Type: ${type}
    echo Mounted on: ${mdir}
  fi
done

vol=$(hal-find-by-capability --capability "volume")
for v in $vol
do
   mountpt=$(hal-get-property --udi ${v} --key volume.mount_point)
   blk=$( hal-get-property --udi ${v} --key block.device )
   echo "mount point: $mountpt"
   echo "device: $blk"
done

使用hal-device命令显示 HAL 设备。

相关内容