Bash

lsblk + 如何擷取沒有文件系統的磁碟

  • November 8, 2020

親愛的朋友和大學

我們有 rhel 7.5 版本的伺服器,每台伺服器都包括帶文件系統的磁碟和不帶文件系統的磁碟

通常sda- 是 OS 磁碟,並且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

如果您lsblk支持--json輸出格式,您可以將其解析為(a)沒有子設備(即未分區)和(b)本身沒有定義的文件系統的塊設備:

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

引用自:https://unix.stackexchange.com/questions/618673