【问题标题】:Detect if a block device is a local disk or a removable usb disk检测块设备是本地磁盘还是可移动U盘
【发布时间】:2014-10-27 14:13:12
【问题描述】:

有什么方法可以检测块设备(例如 /dev/sda 或 /dev/sdc)是否与本地磁盘(我的意思是 scsi 或 sata)或可移动 USB 磁盘相关?

我正在编写一个 shell 脚本,它必须只检测本地磁盘块设备,不包括任何可移动磁盘。

谢谢!

【问题讨论】:

标签: linux bash shell disk


【解决方案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
    

    【讨论】:

      猜你喜欢
      • 2020-04-28
      • 1970-01-01
      • 2014-11-27
      • 1970-01-01
      • 2011-01-06
      • 2016-07-15
      • 2010-12-31
      • 2019-04-30
      • 2016-08-31
      相关资源
      最近更新 更多