我想列出整个 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 等,这可能会变得非常复杂。无论您的程序做什么,它都不太可能与您没有想到的硬件配置一起工作。因此,请务必实施一些彻底的错误检查。