检测块设备是本地磁盘还是可移动U盘
Posted
技术标签:
【中文标题】检测块设备是本地磁盘还是可移动U盘【英文标题】:Detect if a block device is a local disk or a removable usb disk 【发布时间】:2014-10-27 14:13:12 【问题描述】:有什么方法可以检测块设备(例如 /dev/sda 或 /dev/sdc)是否与本地磁盘(我的意思是 scsi 或 sata)或可移动 USB 磁盘相关?
我正在编写一个 shell 脚本,它必须只检测本地磁盘块设备,不包括任何可移动磁盘。
谢谢!
【问题讨论】:
这可能对unix.com/shell-programming-and-scripting/…有帮助 这可能会被改编:***.com/a/5119606/42610 【参考方案1】:使用lshw
:
lshw -class disk -class storage
然后查找bus info
字符串。
【讨论】:
【参考方案2】:您可以使用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
【讨论】:
以上是关于检测块设备是本地磁盘还是可移动U盘的主要内容,如果未能解决你的问题,请参考以下文章