.\" Man page for the lsns command.
.\" Copyright 2015 Karel Zak <kzak@redhat.com>
.\" May be distributed under the GNU General Public License

.TH LSNS 8 "December 2015" "util-linux" "System Administration"
.SH NAME
lsns \- list namespaces
.SH SYNOPSIS
.B lsns
[options]
.RI [ namespace ]

.SH DESCRIPTION
.B lsns
lists information about all the currently accessible namespaces or about the
given \fInamespace\fP.  The \fInamespace\fP identifier is an inode number.

The default output is subject to change.  So whenever possible, you should
avoid using default outputs in your scripts.  Always explicitly define expected
columns by using the \fB\-\-output\fR option together with a columns list in
environments where a stable output is required.

Note that \fBlsns\fR reads information directly from the /proc filesystem and
for non-root users it may return incomplete information.  The current /proc
filesystem may be unshared and affected by a PID namespace
(see \fBunshare \-\-mount\-proc\fP for more details).
.B lsns
is not able to see persistent namespaces without processes where the namespace
instance is held by a bind mount to /proc/\fIpid\fR/ns/\fItype\fR.

.SH OPTIONS
.TP
.BR \-J , " \-\-json"
Use JSON output format.
.TP
.BR \-l , " \-\-list"
Use list output format.
.TP
.BR \-n , " \-\-noheadings"
Do not print a header line.
.TP
.BR \-o , " \-\-output " \fIlist\fP
Specify which output columns to print.  Use \fB\-\-help\fR
to get a list of all supported columns.

The default list of columns may be extended if \fIlist\fP is
specified in the format \fB+\fIlist\fP (e.g. \fBlsns \-o +PATH\fP).
.TP
.BR \-p , " \-\-task " \fIpid\fP
Display only the namespaces held by the process with this \fIpid\fR.
.TP
.BR \-r , " \-\-raw"
Use the raw output format.
.TP
.BR \-t , " \-\-type " \fItype\fP
Display the specified \fItype\fP of namespaces only.  The supported types are
\fBmnt\fP, \fBnet\fP, \fBipc\fP, \fBuser\fP, \fBpid\fP, \fButs\fP and
\fBcgroup\fP.  This option may be given more than once.
.TP
.BR \-u , " \-\-notruncate"
Do not truncate text in columns.
.TP
.BR \-V , " \-\-version"
Display version information and exit.
.TP
.BR \-h , " \-\-help"
Display help text and exit.

.SH AUTHORS
.nf
Karel Zak <kzak@redhat.com>
.fi

.SH "SEE ALSO"
.BR nsenter (1),
.BR unshare (1),
.BR clone (2)

.SH AVAILABILITY
The lsns command is part of the util-linux package and is available from
ftp://ftp.kernel.org/pub/linux/utils/util-linux/.
