可能重复:
在 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 设备。