命令行手册

Man » lsblk 手册在线 - lsblk 手册页的详细在线文档

🌍
lsblk - 列出块设备

概要

lsblk [选项] [设备...]

描述

lsblk 列出所有可用或指定的块设备的信息。 lsblk 命令读取 sysfs 文件系统和 udev 数据库以收集信息。 如果 udev 数据库不可用或 lsblk 在没有 udev 支持的情况下编译,则它会尝试从块设备读取标签、UUID 和文件系统类型。 在这种情况下,需要 root 权限。

默认情况下,该命令以树状格式打印所有块设备(不包括 RAM 磁盘)。 如果设备与其他设备相关,则该设备可能会在树中重复出现。 对于更复杂的设置,建议使用 --merge 选项来收集设备组并描述复杂的 N:M 关系。

树状输出(或 JSON 输出中的 children[] 数组)仅在输出中存在 NAME 列或使用 --tree 命令行选项时才启用。 另请参见 --nodeps 和 --list,以控制树状格式。

默认输出以及 --fs 和 --topology 等选项的默认输出可能会发生变化。 因此,只要可能,您应该避免在脚本中使用默认输出。 始终使用 --output columns-list 和 --list 显式定义所需的列,以便在需要稳定输出的环境中。

使用 lsblk --list-columns 获取所有可用列的列表。

请注意,lsblk 可能会在 udev 尚未完全获取有关最近添加或修改的设备的所有信息时执行。 在这种情况下,建议使用 udevadm settle 在执行 lsblk 之前与 udev 同步。

块设备和文件系统之间的关系并不总是 1:1 的关系。 文件系统可以使用更多块设备,或者可以使用更多路径访问相同的文件系统。 这就是 lsblk 提供 MOUNTPOINT 和 MOUNTPOINTS(复数形式)列的原因。 MOUNTPOINT 列仅显示一个挂载点(通常是文件系统挂载的最后一个实例),而 MOUNTPOINTS 列以多行单元格显示与该设备关联的所有挂载点。

选项

-A, --noempty

不打印空设备。

-a, --all

禁用所有内置过滤器,并列出所有空设备和 RAM 磁盘设备。

-b, --bytes

以字节为单位而不是以人类可读的格式打印大小。

默认情况下,单位(即大小的表示单位)为字节,单位前缀为 2^10 的幂(1024)。 为了达到更好的可读性,缩写符号会进行截断,只显示它们的首字母;例如,“1 KiB”和“1 MiB”分别显示为“1 K”和“1 M”,然后故意省略“iB”,它是这些缩写的组成部分。


-H, --list-columns
列出可用的列,与 --json 或 --raw 结合使用,以机器可读的格式输出。

-D, --discard
打印有关每个设备的丢弃功能(TRIM、UNMAP)的信息。

-d, --nodeps
不打印持有设备或从设备。例如,lsblk --nodeps /dev/sda 仅打印关于 sda 设备的信息。

-E, --dedup column
使用指定的列作为去重键来去重输出树。如果设备不可用该键,或者该设备是一个分区,并且其父磁盘设备提供相同的键,则始终打印该设备。

通常用于对系统多路径设备进行去重,例如通过 -E WWN。

-e, --exclude list
排除由逗号分隔的主设备号列表指定的设备。请注意,如果未指定 --all,则默认排除 RAM 磁盘(主设备号=1)。过滤器仅应用于顶级设备。这对于 --list 输出格式可能会产生误导,因为在该格式中,设备的层次结构并不明显。

-f, --fs
输出有关文件系统的信息。此选项等效于 -o NAME,FSTYPE,FSVER,LABEL,UUID,FSAVAIL,FSUSE%,MOUNTPOINTS。关于文件系统和 RAID 的权威信息由 blkid(8) 命令提供。

--hyperlink[=mode]
将挂载点路径打印为终端超链接。模式可以设置为“always”、“never”或“auto”。可选参数 when 可以设置为“auto”、“never”或“always”。如果省略 when 参数,则默认设置为“auto”。“auto”设置意味着仅当输出在终端上时才使用超链接。

-I, --include list
包括由逗号分隔的主设备号列表指定的设备。过滤器仅应用于顶级设备。这对于 --list 输出格式可能会产生误导,因为在该格式中,设备的层次结构并不明显。

-i, --ascii
使用 ASCII 字符进行树形格式化。

-J, --json
使用 JSON 输出格式。强烈建议使用 --output 并且必要时使用 --tree。请注意,children[] 仅在使用了 NAME 列或 --tree 时使用。

-l, --list
以列表的形式输出。输出不提供有关设备之间关系的信息,并且从 2.34 版本开始,如果未指定 --pairs 或 --raw,则每个设备仅打印一次(可解析的输出会以向后兼容的方式进行维护)。

-M, --merge
将子树的父设备组合在一起,以便为 RAID 和多路径设备提供更易读的输出。需要树形输出。

-m, --perms
输出有关设备所有者、组和模式的信息。此选项等效于 -o NAME,SIZE,OWNER,GROUP,MODE。

-N, --nvme
仅输出有关 NVMe 设备的信息。

-v, --virtio
仅输出有关 virtio 设备的信息。

-n, --noheadings
不打印标题行。

-o, --output list
指定要打印的输出列。使用 --list-columns 获取所有受支持列的列表。列可能会影响树形输出。默认情况下,如果使用 'NAME' 列,则使用树形输出(请参阅 --tree)。

默认的列列表可以通过以下方式扩展:在列表中指定 +list 格式(例如,lsblk -o +UUID)。

-O, --output-all

输出所有可用的列。

-P, --pairs

以“key=value”对的形式生成输出。输出行仍然按依赖关系排序。所有潜在的不安全值字符都会进行十六进制转义(\x<code&gt;)。请参阅选项 --shell

-p, --paths

打印完整的设备路径。

-Q, --filter expr

仅打印满足 expr 指定条件的设备。在 lsblk 收集所有输出列的数据之前,会评估过滤器。只有系统所需的、用于延迟评估表达式的数据会被检索。与通常由 grep(1) 等工具执行的后期过滤相比,这种方法可以提高性能。

此功能是实验性的。请参阅 scols-filter(5)。例如,排除 sdasdb,但打印所有其他内容(!~ 是一个否定正则表达式匹配运算符):

lsblk --filter 'NAME !~ "sd[ab]"`

--highlight expr 对匹配表达式的行进行颜色标记。此功能是实验性的。请参阅 scols-filter(5)

--ct name [: param [: function ]] 定义一个自定义计数器。计数器将在标准输出之后打印。name 是自定义计数器的名称,可选的 param 是要用于计数器的列的名称,可选的 function 指定聚合函数,支持的函数有:countminmaxsum。默认值为 count

如果未指定 param,则计数器将计算行数。此功能是实验性的。请参阅 --ct-filter

例如,--ct MyCounter:SIZE:sum 将计算所有行的 SIZE 的总和;要计算 SATA 磁盘的数量,可以使用:

lsblk --ct-filter 'TYPE=="disk" && TRAN=="sata"' --ct "Number of SATA devices"

--ct-filter expr 为下一个计数器定义一个限制。此功能是实验性的。请参阅 --ctscols-filter(5)。例如,按设备类型聚合大小:

lsblk --ct-filter 'TYPE=="part"' --ct Partitions:SIZE:sum \
--ct-filter 'TYPE=="disk"' --ct WholeDisks:SIZE:sum
-r, --raw

以原始格式生成输出。输出行仍然按依赖关系排序。NAMEKNAMELABELPARTLABELMOUNTPOINT 列中的所有潜在的不安全字符都会进行十六进制转义。

-S, --scsi

仅输出关于 SCSI 设备的信息。所有分区、从设备和持有设备都会被忽略。

-s, --inverse

以相反的顺序打印依赖关系。如果请求 --list 输出,则行仍然按依赖关系排序。

-T, --tree[=column]

强制使用树状输出格式。如果指定了 column,则会以该列的形式打印树。默认值为 NAME 列。

-t, --topology

输出关于块设备拓扑的信息。此选项等同于


-o NAME,ALIGNMENT,MIN-IO,OPT-IO,PHY-SEC,LOG-SEC,ROTA,SCHED,RQ-SIZE,RA,WSAME.

-w, --width number

指定输出宽度,单位为字符数。默认值为终端列数,如果未在终端中执行,则默认情况下不限制输出宽度。此选项还会强制 lsblk 假定不允许使用终端控制字符和不安全字符。预期的用例是,例如,当 lsblk 用于 watch(1) 命令时。

-x, --sort column

按列对输出行进行排序。此选项默认启用 --list 输出格式。可以使用 --tree 选项强制使用树状输出,然后按该列对树分支进行排序。

-y, --shell

列名将被修改为仅包含允许用于 shell 变量标识符的字符,例如,MIN_IO 和 FSUSE_PCT,而不是 MIN-IO 和 FSUSE%。例如,这可以与 --pairs 选项一起使用。请注意,此功能已在版本 2.37 中自动为 --pairs 启用,但由于兼容性问题,现在需要通过 --shell 请求此行为。

-z, --zoned

为每个设备打印区域相关信息。

--sysroot directory

收集与从发出 lsblk 命令的实例不同的 Linux 实例相关的数据。指定的目录是要检查的 Linux 实例的系统根目录。目标目录中的实际设备节点可以替换为包含 udev 属性的文本文件。

--properties-by list

此选项指定 lsblk 收集文件系统和分区表信息时使用的方法。该列表是一个逗号分隔的方法名列表。默认设置为“file,udev,blkid”。支持的方法是:

udev

从 udev 数据库读取数据。如果失败,则继续下一个探测方法。

blkid

使用 libblkid 直接从设备读取数据。如果失败,则继续下一个探测方法。

file

从文件读取数据。只有在指定了 --sysroot 选项时,才使用此方法。此方法始终停止探测。

none

不进行探测。此方法始终停止探测。

-h, --help

显示帮助文本并退出。

-V, --version

显示版本并退出。

退出状态

0   成功

1   失败

32  未找到指定的任何设备

64  找到了一些指定的设备,但没有找到所有设备

环境

LSBLK_DEBUG=all
启用 lsblk 调试输出。

LIBBLKID_DEBUG=all
启用 libblkid 调试输出。

LIBMOUNT_DEBUG=all
启用 libmount 调试输出。

LIBSMARTCOLS_DEBUG=all
启用 libsmartcols 调试输出。

LIBSMARTCOLS_DEBUG_PADDING=on
使用可见的填充字符。

注意事项

对于分区,某些信息(例如,队列属性)会从父设备继承。

lsblk 命令需要能够通过主:次号查找每个块设备,这通过使用 /sys/dev/block 完成。此 sysfs 块目录出现在 2.6.27 内核中(2008 年 10 月)。如果在使用足够新的内核时出现问题,请检查在内核构建时是否启用了 CONFIG_SYSFS。


作者

Milan Broz <_>、Karel Zak <_>

参见

blkid(8)、findmnt(8) ls(1)、scols-filter(5)

报告错误

如需报告错误,请使用问题跟踪器 [https://github.com/util-linux/util-linux/issues]。

可用性

lsblk 命令是 util-linux 软件包的一部分,可以从 Linux 内核存档 [https://www.kernel.org/pub/linux/utils/util-linux/] 下载。