]> git.ipfire.org Git - thirdparty/util-linux.git/blobdiff - misc-utils/lsblk.8
lsblk: force tree on --json --tree independently on used columns
[thirdparty/util-linux.git] / misc-utils / lsblk.8
index 64cf4a9883f9677eba6097216ce2e690750cfe5b..3201582789f892093fe8e33db186b1d17e517f52 100644 (file)
-.\" -*- nroff -*-
-.TH LSBLK 8 "April 2010" "util-linux" "System Administration"
+.TH LSBLK 8 "February 2013" "util-linux" "System Administration"
 .SH NAME
 lsblk \- list block devices
 .SH SYNOPSIS
 .B lsblk
-.RB [ options ]
-.sp
-.B lsblk
-.RB [ options ]
-.IR device...
+[options]
+.RI [ device ...]
 .SH DESCRIPTION
 .B lsblk
-lists information about all or the specified block devices.  The
+lists information about all available or the specified block devices.  The
 .B lsblk
 command reads the
-.I sysfs
-filesystem to gather information.
+.B sysfs
+filesystem and
+.B udev db
+to gather information. If the udev db is not available or lsblk is compiled without udev support than it
+tries to read LABELs, UUIDs and filesystem types from the block device. In this case root permissions
+are necessary.
 .PP
 The command prints all block devices (except RAM disks) in a tree-like format
 by default.  Use
 .B "lsblk --help"
 to get a list of all available columns.
+.PP
+The default output, as well as the default output from options like
+.B \-\-fs
+and
+.BR \-\-topology ,
+is subject to change.  So whenever possible, you should avoid using default
+outputs in your scripts.  Always explicitly define expected columns by using
+.B \-\-output
+.I columns-list
+and
+.B \-\-list
+in environments where a stable output is required.
+.PP
+Note that
+.B lsblk
+might be executed in time when
+.B udev
+does not have all information about recently added or modified devices yet. In this
+case it is recommended to use
+.B "udevadm settle"
+before lsblk to synchronize with udev.
 .SH OPTIONS
-.IP "\fB\-a, \-\-all\fP"
-List all block devices.
-.IP "\fB\-b, \-\-bytes\fP"
-Print the SIZE column in bytes rather than in human-readable format.
-.IP "\fB\-d, \-\-nodeps\fP"
-Don't print device holders or slaves.  For example "lsblk --nodeps /dev/sda" prints
+.TP
+.BR \-a , " \-\-all"
+Also list empty devices and RAM disk devices.
+.TP
+.BR \-b , " \-\-bytes"
+Print the SIZE column in bytes rather than in a human-readable format.
+.TP
+.BR \-D , " \-\-discard"
+Print information about the discarding capabilities (TRIM, UNMAP) for each device.
+.TP
+.BR \-d , " \-\-nodeps"
+Do not print holder devices or slaves.  For example, \fBlsblk --nodeps /dev/sda\fR prints
 information about the sda device only.
-.IP "\fB\-D, \-\-discard\fP"
-Print information about the discard (TRIM, UNMAP) capabilities for each device.
-.IP "\fB\-e, \-\-exclude \fIlist\fP
-Exclude the devices specified by a comma-separated \fIlist\fR of major device numbers.
-Note that RAM disks (major=1) are excluded by default.
-.IP "\fB\-f, \-\-fs\fP
-Output info about filesystems.  This option is equivalent to "-o NAME,FSTYPE,LABEL,MOUNTPOINT".
+.TP
+.BR \-E , " \-\-dedup " \fIcolumn\fP
+Use \fIcolumn\fP as a de-duplication key to de-duplicate output tree. If the
+key is not available for the device, or the device is a partition and parental
+whole-disk device provides the same key than the device is always printed.
+
+The usual use case is to de-duplicate output on system multi-path devices, for
+example by \fB\-E WWN\fR.
+.TP
+.BR \-e , " \-\-exclude " \fIlist\fP
+Exclude the devices specified by the comma-separated \fIlist\fR of major device numbers.
+Note that RAM disks (major=1) are excluded by default if \fB\-\-all\fR is no specified.
+The filter is applied to the top-level devices only. This maybe be confusing for
+\fB\-\-list\fR output format where hierarchy of the devices is not obvious.
+.TP
+.BR \-f , " \-\-fs"
+Output info about filesystems.  This option is equivalent to
+.BR -o\ NAME,FSTYPE,LABEL,UUID,MOUNTPOINT .
 The authoritative information about filesystems and raids is provided by the
 .BR blkid (8)
 command.
-.IP "\fB\-h, \-\-help\fP"
-Print a help text and exit.
-.IP "\fB\-i, \-\-ascii\fP"
+.TP
+.BR \-h , " \-\-help"
+Display help text and exit.
+.TP
+.BR \-I , " \-\-include " \fIlist\fP
+Include devices specified by the comma-separated \fIlist\fR of major device numbers.
+The filter is applied to the top-level devices only. This maybe be confusing for
+\fB\-\-list\fR output format where hierarchy of the devices is not obvious.
+.TP
+.BR \-i , " \-\-ascii"
 Use ASCII characters for tree formatting.
-.IP "\fB\-m, \-\-perms\fP
-Output info about device owner, group and mode.  This option is equivalent to "-o NAME,SIZE,OWNER,GROUP,MODE".
-.IP "\fB\-l, \-\-list\fP"
-Use the list output format.
-.IP "\fB\-n, \-\-noheadings\fP"
+.TP
+.BR \-J , " \-\-json"
+Use JSON output format.  It's strongly recommended to use \fB\-\-output\fR and
+also \fB\-\-tree\fR if necessary.
+.TP
+.BR \-l , " \-\-list"
+Produce output in the form of a list. The output does not provide information
+about relationships between devices and since version 2.34 every device is
+printed only once.
+.TP
+.BR \-M , " \-\-merge"
+Group parents of sub-trees to provide more readable output for RAIDs and
+Multi-path devices. The tree-like output is required.
+.TP
+.BR \-m , " \-\-perms"
+Output info about device owner, group and mode.  This option is equivalent to
+.BR -o\ NAME,SIZE,OWNER,GROUP,MODE .
+.TP
+.BR \-n , " \-\-noheadings"
 Do not print a header line.
-.IP "\fB\-o, \-\-output \fIlist\fP"
+.TP
+.BR \-o , " \-\-output " \fIlist\fP
 Specify which output columns to print.  Use
-.B "--help"
-to get a list of all supported columns.
-.IP "\fB\-P, \-\-pairs\fP"
-Use key="value" output format. All potentially unsafe characters are hex-escaped (\\x<code>).
-.IP "\fB\-r, \-\-raw\fP"
-Use the raw output format. All potentially unsafe characters are hex-escaped (\\x<code>).
-.IP "\fB\-t, \-\-topology\fP"
-Output info about block device topology.
-This option is equivalent to "-o NAME,ALIGNMENT,MIN-IO,OPT-IO,PHY-SEC,LOG-SEC,ROTA,SCHED".
-.IP "\fB\-V, \-\-version\fP"
-Output version information and exit.
-.SH NOTES
-For the partitions are some information (e.g. queue attributes) inherited from
-parental device.
+.B \-\-help
+to get a list of all supported columns.  The columns may affect tree-like output.
+The default is to use tree for the column 'NAME' (see also \fB\-\-tree\fR).
 
-The
-.B lsblk
-reads filesystem information (FSTYPE, LABEL and UUID) from udev database if
-not executed by root.
+The default list of columns may be extended if \fIlist\fP is
+specified in the format \fI+list\fP (e.g. \fBlsblk -o +UUID\fP).
+.TP
+.BR \-O , " \-\-output\-all "
+Output all available columns.
+.TP
+.BR \-P , " \-\-pairs"
+Produce output in the form of key="value" pairs.
+All potentially unsafe characters are hex-escaped (\\x<code>).
+.TP
+.BR \-p , " \-\-paths"
+Print full device paths.
+.TP
+.BR \-r , " \-\-raw"
+Produce output in raw format.  All potentially unsafe characters are hex-escaped
+(\\x<code>) in the NAME, KNAME, LABEL, PARTLABEL and MOUNTPOINT columns.
+.TP
+.BR \-S , " \-\-scsi"
+Output info about SCSI devices only.  All partitions, slaves and holder devices are ignored.
+.TP
+.BR \-s , " \-\-inverse"
+Print dependencies in inverse order. If the \fB\-\-list\fR output is requested then
+the lines are still ordered by dependencies.
+.TP
+.BR \-T , " \-\-tree" [ =\fIcolumn ]
+Force tree-like output format.  If \fIcolumn\fP is specified, then a tree is printed in the column.
+The default is NAME column.
+.TP
+.BR \-t , " \-\-topology"
+Output info about block-device topology.
+This option is equivalent to
+.BR -o\ NAME,ALIGNMENT,MIN-IO,OPT-IO,PHY-SEC,LOG-SEC,ROTA,SCHED,RQ-SIZE,RA,WSAME .
+.TP
+.BR \-V , " \-\-version"
+Display version information and exit.
+.TP
+.BR \-x , " \-\-sort " \fIcolumn\fP
+Sort output lines by \fIcolumn\fP. This option enables \fB\-\-list\fR output format by default.
+It is possible to use the option \fI\-\-tree\fP to force tree-like output and
+than the tree branches are sorted by the \fIcolumn\fP.
+.TP
+.BR \-z , " \-\-zoned"
+Print the zone model for each device.
+.TP
+.BR " \-\-sysroot " \fIdirectory\fP
+Gather data for a Linux instance other than the instance from which the lsblk
+command is issued.  The specified directory is the system root of the Linux
+instance to be inspected.  This option is designed for the testing purpose.
+
+.SH NOTES
+For partitions, some information (e.g. queue attributes) is inherited from the
+parent device.
 .PP
 The
 .B lsblk
-needs to be able to lookup sysfs path by major:minor, which is done
-done by using
-.BR /sys/dev/block .
-The block sysfs appeared in kernel 2.6.27 (October 2008).  In case of
-problem with new enough kernel check that CONFIG_SYSFS was enabled at
-the time of kernel build.
+command needs to be able to look up each block device by major:minor numbers,
+which is done by using
+.IR /sys/dev/block .
+This sysfs block directory appeared in kernel 2.6.27 (October 2008).
+In case of problems with a new enough kernel, check that CONFIG_SYSFS
+was enabled at the time of the kernel build.
+
+.SH RETURN CODES
+.IP 0
+success
+.IP 1
+failure
+.IP 32
+none of specified devices found
+.IP 64
+some specified devices found, some not found
+
 .SH AUTHORS
 .nf
 Milan Broz <mbroz@redhat.com>
 Karel Zak <kzak@redhat.com>
 .fi
+.SH ENVIRONMENT
+.IP LSBLK_DEBUG=all
+enables lsblk debug output.
+.IP LIBBLKID_DEBUG=all
+enables libblkid debug output.
+.IP LIBMOUNT_DEBUG=all
+enables libmount debug output.
+.IP LIBSMARTCOLS_DEBUG=all
+enables libsmartcols debug output.
+.IP LIBSMARTCOLS_DEBUG_PADDING=on
+use visible padding characters. Requires enabled LIBSMARTCOLS_DEBUG.
 .SH SEE ALSO
-.BR findmnt (8),
+.BR ls (1),
 .BR blkid (8),
-.BR ls (1)
+.BR findmnt (8)
 .SH AVAILABILITY
 The lsblk command is part of the util-linux package and is available from
-ftp://ftp.kernel.org/pub/linux/utils/util-linux/.
+https://www.kernel.org/pub/linux/utils/util-linux/.