lsblk + 仅捕获磁盘

lsblk + 仅捕获磁盘

我只想捕获来自的磁盘LSBLK

如此处所示,尽管 fd0 不是真正可供使用的磁盘,但它也会出现

在这种情况下我们可以这样做lsblk | grep 磁盘 | grep -v fd0

但也许我们错过了一些其他需要过滤它们的设备grep -v

还有哪些其他磁盘设备可能出现lsblk | grep 磁盘而不是真正的磁盘?

lsblk | grep disk 

fd0                2:0    1     4K  0 disk
sda                8:0    0   100G  0 disk
sdb                8:16   0     2G  0 disk /Kol
sdc                8:32   0     2G  0 disk
sdd                8:48   0     2G  0 disk
sde                8:64   0     2G  0 disk
sdf                8:80   0     2G  0 disk


lsblk
NAME             MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
fd0                2:0    1     4K  0 disk
sda                8:0    0   150G  0 disk
├─sda1             8:1    0   500M  0 part /boot
└─sda2             8:2    0 149.5G  0 part
├─vg00-yv_root 253:0    0  19.6G  0 lvm  /
├─vg00-yv_swap 253:1    0  15.6G  0 lvm  [SWAP]
└─vg00-yv_var  253:2    0   100G  0 lvm  /var
sdb                8:16   0     2G  0 disk /Kol
sdc                8:32   0     2G  0 disk
sdd                8:48   0     2G  0 disk
sde                8:64   0     2G  0 disk
sdf                8:80   0     2G  0 disk
sr0               11:0    1  1024M  0 rom

答案1

如果您只想通过设备主编号标识为 SCSI 的磁盘8,而不需要设备分区,则可以搜索设备主编号而不是字符串“disk”:

lsblk -d | awk '/ 8:/'

其中-d(或--no-deps) 选项指示不包括设备分区。

对于最近的 Linux 系统,更简单

lsblk -I 8 -d

正如用户尼克所指出的那样,应该足够了。

答案2

我只想获取所有磁盘的设备名称,没有任何其他输出。最终使用了这个:

lsblk -nd --output NAME

这会产生类似的结果

sda
sdb

-d仅输出磁盘, -n删除标题行,并--output NAME确保仅列出设备的名称。

答案3

我没有足够的声誉来发表评论,所以这是我的评论作为答案。

sudo lsblk -I 8,259 -d  

如果您想将nvme设备包含在列表中。

答案4

由于没有解决方案适合我,我只是再次使用jq......

$ lsblk  -d  -J | jq '.blockdevices[] | select(.type == "disk" and  .rm == false and .ro == false) | .name +" "+.size' -r
vda 70G
vdb 20G

相关内容