随笔 - 6  文章 - 124  评论 - 1  阅读 - 13042

Linux lsblk 命令详解

简介

Linux 中的 lsblk 命令,全称叫做:list block devices 用于列出块设备的信息,如硬盘、ssd盘及其分区。它提供了系统上所有块设备的树形结构,显示了它们的安装方式、大小和类型。

lsblk 命令读取 sysfs 文件系统和 udev db 收集信息。如果 udev db 不可用或在没有 udev 支持的情况下编译 lsblk,然后它尝试读取来自块设备的标签、uuid 和文件系统类型

基础语法

lsblk [options]

输出的字段

  • NAME:块设备的名称(例如,sda, nvme0n1)。

  • MAJ:MIN::主设备号和次设备号

  • RM:该设备是否可移动(1 表示可移动,0 表示不可移动)

  • SIZE:块设备的大小

  • RO:设备是否为只读(1 为只读,0 为读写)

  • TYPE:设备的类型,如:disk, part, rom

  • MOUNTPOINT:挂载点:设备在文件系统中的安装位置

常用选项

  • -a:在输出中包含空设备

  • -f:显示文件系统信息(类型、标签、UUID)

  • -l:以列表格式显示输出

  • -J:以 JSON 格式显示输出

  • -m:显示设备所有者、组和模式

  • -n:抑制输出中的标题行

  • -p:显示完整的设备路径(例如,/dev/sda,而不仅仅是 sda

  • -e <dev>:从输出中排除特定设备

  • -I <dev>:在输出中仅包含特定设备

  • -o <columns>:指定要显示的列

  • x:按指定字段对输出进行排序

示例用法

列出所有块设备

这将以树结构显示所有块设备

lsblk

示例输出

NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda           8:0    0   500G  0 disk
├─sda1        8:1    0   200G  0 part /
├─sda2        8:2    0   100G  0 part /home
└─sda3        8:3    0   200G  0 part [SWAP]
sdb           8:16   1   256G  0 disk
└─sdb1        8:17   1   256G  0 part /mnt/usb

仅显示设备名称

lsblk -n

JSON 或列表格式显示输出

lsblk -J  # JSON format
lsblk -l  # List format

示例输出

{
   "blockdevices": [
      {"name": "sda", "maj:min": "8:0", "rm": "0", "size": "238.5G", "ro": "0", "type": "disk", "mountpoint": null,
         "children": [
            {"name": "sda1", "maj:min": "8:1", "rm": "0", "size": "512M", "ro": "0", "type": "part", "mountpoint": "/boot/efi"},
            {"name": "sda2", "maj:min": "8:2", "rm": "0", "size": "238G", "ro": "0", "type": "part", "mountpoint": "/"}
         ]
      }
   ]
}

显示带有文件系统信息的设备

包含有关文件系统类型、标签和 UUID 的详细信息

lsblk -f

示例输出

NAME        FSTYPE LABEL    UUID                                 MOUNTPOINT
sda
├─sda1      ext4   rootfs   1234-5678-ABCD-EFGH                 /
├─sda2      ext4   home     8765-4321-HGFE-DCBA                 /home
└─sda3      swap   swap     1122-3344-5566-7788                 [SWAP]
sdb
└─sdb1      vfat   USB_DISK ABCD-1234                           /mnt/usb

显示具有权限的设备

lsblk -m

显示所有设备,包括空设备

默认情况下,lsblk 不会显示没有文件系统或挂载点的设备

lsblk -a

显示内核信息

显示有关设备的内核信息(例如主设备号和次设备号)

lsblk -o KNAME,MAJ:MIN

自定义字段展示

lsblk -o NAME,SIZE,FSTYPE,UUID,MOUNTPOINT

仅列出已挂载的文件系统

lsblk -f | grep "/"

UUID 列出设备

lsblk -o NAME,UUID | grep sda1

排除可移动设备

排除 USB 驱动器和其他可移动设备

lsblk -e 7

设备类型 7 通常对应于循环设备

显示特定设备的详细信息

lsblk /dev/sda

识别未使用的分区

列出所有未挂载的分区

lsblk -f | grep -v "MOUNTPOINT" | grep -v "[SWAP]"

在脚本中使用 lsblk

for dev in $(lsblk -ln -o NAME); do
    echo "Device: $dev"
done
posted on   我是唐青枫  阅读(66)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示