lsblk + 如何捕获没有文件系统的磁盘

lsblk + 如何捕获没有文件系统的磁盘

亲爱的朋友和大学

我们有 rhel 7.5 版本的服务器,每台服务器都包含带文件系统的磁盘和不带文件系统的磁盘

通常sda- 是操作系统磁盘,并且sdb是已经具有文件系统的磁盘,

使用以下lsblk语法,我们可以捕获具有文件系统类型的磁盘列表

lsblk --fs  -o NAME,FSTYPE
NAME             FSTYPE
sda
├─sda1           xfs
└─sda2           LVM2_member
  ├─VG-LV_root xfs
  ├─VG-LV_swap swap
  └─VG-LV_var  xfs
sdb              ext4
sdc  
sdd

我想知道如何匹配所有没有文件系统的磁盘

预期产出

sdc
sdd

所以我们尝试以下语法

lsblk --fs  -o NAME,FSTYPE |  awk '$2 == "" {print $1}'

但我们得到以下结果

sda
sdc
sdd

所以我们sda尽管sda有文件系统(XFS)

那么如何只捕获real disks那些没有文件系统-sdc / sdd

答案1

如果您lsblk支持--json输出格式,并且已经jq安装,则可以解析以下块设备(a)没有子设备(即未分区)和(b)本身没有定义的文件系统:

lsblk --fs --json |
  jq -r '.blockdevices[] | select(.children == null and .fstype == null) | .name'

相关内容