需要 HDD 设备列表(不包括我的操作系统 HDD)

需要 HDD 设备列表(不包括我的操作系统 HDD)

我想列出整个 HDD 设备,不包括连接到我的系统的操作系统运行设备。我做了很多谷歌搜索,并在 Linux 命令行中发出了更多命令。但无法门控正确的输出。

一个命令可以提供所有设备,包括我的操作系统设备。

fdisk -l 2>/dev/null | grep "Disk \/" | grep -v "\/dev\/md" | awk '{print $2}' | sed -e 's/://g'

输出:

/dev/sda
/dev/sdb
/dev/sdc

我所说的“OS HDD”是指保存文件系统分区的硬盘/

答案1

df /显示根文件系统所在的块设备。你可以这样解析它:

root_device=$(df -P / | awk 'NR!=1 {print $1}')

如果您使用没有 LVM 或 RAID 的 PC 分区,则根设备将是/dev/hdZ9/dev/sdZ9其中Z是指定磁盘的小写字母,9是指定分区的数字。您可以这样提取磁盘部分:

root_disk=${root_device#[0-9]}; root_disk=${root_disk#[0-9]}

磁盘和其他块设备的完整列表可在 中找到/sys/block

请注意,对于 RAID、LVM 等,这可能会变得非常复杂。无论您的程序做什么,它都不太可能与您没有想到的硬件配置一起工作。因此,请务必实施一些彻底的错误检查。

相关内容