亲爱的朋友和大学
我们有 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'