【发布时间】:2014-10-27 14:13:12
【问题描述】:
有什么方法可以检测块设备(例如 /dev/sda 或 /dev/sdc)是否与本地磁盘(我的意思是 scsi 或 sata)或可移动 USB 磁盘相关?
我正在编写一个 shell 脚本,它必须只检测本地磁盘块设备,不包括任何可移动磁盘。
谢谢!
【问题讨论】:
有什么方法可以检测块设备(例如 /dev/sda 或 /dev/sdc)是否与本地磁盘(我的意思是 scsi 或 sata)或可移动 USB 磁盘相关?
我正在编写一个 shell 脚本,它必须只检测本地磁盘块设备,不包括任何可移动磁盘。
谢谢!
【问题讨论】:
使用lshw:
lshw -class disk -class storage
然后查找bus info 字符串。
【讨论】:
您可以使用udev,Linux 设备管理器。
查询每个块设备会显示一些关于它的信息,包括总线,您可以使用这些信息来辨别设备是否是可移动 USB 设备。
这是脚本:
for device in /sys/block/sd*; do
device_info="$(udevadm info --query=property --path=$device)"
device_name=$(echo "$device_info" | perl -ne 'print "$1" if /^DEVNAME=(.*)/')
device_bus=$(echo "$device_info" | perl -ne 'print "$1" if /^ID_BUS=(.*)/')
echo "Device $device_name bus: $device_bus"
done
这是一个示例结果:
Device /dev/sda bus: ata
Device /dev/sdb bus: ata
Device /dev/sdc bus: usb
【讨论】: