linux - 检测 block 设备是本地磁盘还是移动U盘

标签 linux bash shell disk

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

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

谢谢!

最佳答案

您可以使用 udev ,Linux 设备管理器。

查询每个 block 设备将显示有关它的几个信息,包括总线,您可以使用它来辨别设备是否是可移动 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

关于linux - 检测 block 设备是本地磁盘还是移动U盘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25638193/

相关文章:

bash - 在Packer脚本中更改文件(使用sed)使文件保持不变

regex - Bash——重命名文件

linux - 在 Debian 服务器上通过 ssh 连接到 Git 用户时没有(自定义)答案

C++ - Linux 中的 grep 路径

linux - 关闭终端后无法在 Ubuntu 下运行 Swift

Bash 方法根据索引列表比较两个不同文件中的特定列

linux - shell脚本的意外行为

c -/proc/sys/kernel/sched_child_runs_first 工作吗?

linux - 在运行 Angular 2 快速入门时解决或修复 Linux 上的 NPM lite-server 错误

json - 将 bash 变量传递给 jq