'\" t
.TH "LOGINCTL" "1" "" "systemd 239" "loginctl"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
loginctl \- Control the systemd login manager
.SH "SYNOPSIS"
.HP \w'\fBloginctl\fR\ 'u
\fBloginctl\fR [OPTIONS...] {COMMAND} [NAME...]
.SH "DESCRIPTION"
.PP
\fBloginctl\fR
may be used to introspect and control the state of the
\fBsystemd\fR(1)
login manager
\fBsystemd-logind.service\fR(8)\&.
.SH "OPTIONS"
.PP
The following options are understood:
.PP
\fB\-\-no\-ask\-password\fR
.RS 4
Do not query the user for authentication for privileged operations\&.
.RE
.PP
\fB\-p\fR, \fB\-\-property=\fR
.RS 4
When showing session/user/seat properties, limit display to certain properties as specified as argument\&. If not specified, all set properties are shown\&. The argument should be a property name, such as
"Sessions"\&. If specified more than once, all properties with the specified names are shown\&.
.RE
.PP
\fB\-\-value\fR
.RS 4
When showing session/user/seat properties, only print the value, and skip the property name and
"="\&.
.RE
.PP
\fB\-a\fR, \fB\-\-all\fR
.RS 4
When showing session/user/seat properties, show all properties regardless of whether they are set or not\&.
.RE
.PP
\fB\-l\fR, \fB\-\-full\fR
.RS 4
Do not ellipsize process tree entries\&.
.RE
.PP
\fB\-\-kill\-who=\fR
.RS 4
When used with
\fBkill\-session\fR, choose which processes to kill\&. Must be one of
\fBleader\fR, or
\fBall\fR
to select whether to kill only the leader process of the session or all processes of the session\&. If omitted, defaults to
\fBall\fR\&.
.RE
.PP
\fB\-s\fR, \fB\-\-signal=\fR
.RS 4
When used with
\fBkill\-session\fR
or
\fBkill\-user\fR, choose which signal to send to selected processes\&. Must be one of the well known signal specifiers, such as
\fBSIGTERM\fR,
\fBSIGINT\fR
or
\fBSIGSTOP\fR\&. If omitted, defaults to
\fBSIGTERM\fR\&.
.RE
.PP
\fB\-n\fR, \fB\-\-lines=\fR
.RS 4
When used with
\fBuser\-status\fR
and
\fBsession\-status\fR, controls the number of journal lines to show, counting from the most recent ones\&. Takes a positive integer argument\&. Defaults to 10\&.
.RE
.PP
\fB\-o\fR, \fB\-\-output=\fR
.RS 4
When used with
\fBuser\-status\fR
and
\fBsession\-status\fR, controls the formatting of the journal entries that are shown\&. For the available choices, see
\fBjournalctl\fR(1)\&. Defaults to
"short"\&.
.RE
.PP
\fB\-H\fR, \fB\-\-host=\fR
.RS 4
Execute the operation remotely\&. Specify a hostname, or a username and hostname separated by
"@", to connect to\&. The hostname may optionally be suffixed by a container name, separated by
":", which connects directly to a specific container on the specified host\&. This will use SSH to talk to the remote machine manager instance\&. Container names may be enumerated with
\fBmachinectl \-H \fR\fB\fIHOST\fR\fR\&.
.RE
.PP
\fB\-M\fR, \fB\-\-machine=\fR
.RS 4
Execute operation on a local container\&. Specify a container name to connect to\&.
.RE
.PP
\fB\-\-no\-pager\fR
.RS 4
Do not pipe output into a pager\&.
.RE
.PP
\fB\-\-no\-legend\fR
.RS 4
Do not print the legend, i\&.e\&. column headers and the footer with hints\&.
.RE
.PP
\fB\-h\fR, \fB\-\-help\fR
.RS 4
Print a short help text and exit\&.
.RE
.PP
\fB\-\-version\fR
.RS 4
Print a short version string and exit\&.
.RE
.SH "COMMANDS"
.PP
The following commands are understood:
.SS "Session Commands"
.PP
\fBlist\-sessions\fR
.RS 4
List current sessions\&.
.RE
.PP
\fBsession\-status\fR [\fIID\fR\&...]
.RS 4
Show terse runtime status information about one or more sessions, followed by the most recent log data from the journal\&. Takes one or more session identifiers as parameters\&. If no session identifiers are passed, the status of the caller\*(Aqs session is shown\&. This function is intended to generate human\-readable output\&. If you are looking for computer\-parsable output, use
\fBshow\-session\fR
instead\&.
.RE
.PP
\fBshow\-session\fR [\fIID\fR\&...]
.RS 4
Show properties of one or more sessions or the manager itself\&. If no argument is specified, properties of the manager will be shown\&. If a session ID is specified, properties of the session are shown\&. By default, empty properties are suppressed\&. Use
\fB\-\-all\fR
to show those too\&. To select specific properties to show, use
\fB\-\-property=\fR\&. This command is intended to be used whenever computer\-parsable output is required\&. Use
\fBsession\-status\fR
if you are looking for formatted human\-readable output\&.
.RE
.PP
\fBactivate\fR [\fIID\fR]
.RS 4
Activate a session\&. This brings a session into the foreground if another session is currently in the foreground on the respective seat\&. Takes a session identifier as argument\&. If no argument is specified, the session of the caller is put into foreground\&.
.RE
.PP
\fBlock\-session\fR [\fIID\fR\&...], \fBunlock\-session\fR [\fIID\fR\&...]
.RS 4
Activates/deactivates the screen lock on one or more sessions, if the session supports it\&. Takes one or more session identifiers as arguments\&. If no argument is specified, the session of the caller is locked/unlocked\&.
.RE
.PP
\fBlock\-sessions\fR, \fBunlock\-sessions\fR
.RS 4
Activates/deactivates the screen lock on all current sessions supporting it\&.
.RE
.PP
\fBterminate\-session\fR \fIID\fR\&...
.RS 4
Terminates a session\&. This kills all processes of the session and deallocates all resources attached to the session\&.
.RE
.PP
\fBkill\-session\fR \fIID\fR\&...
.RS 4
Send a signal to one or more processes of the session\&. Use
\fB\-\-kill\-who=\fR
to select which process to kill\&. Use
\fB\-\-signal=\fR
to select the signal to send\&.
.RE
.SS "User Commands"
.PP
\fBlist\-users\fR
.RS 4
List currently logged in users\&.
.RE
.PP
\fBuser\-status\fR [\fIUSER\fR\&...]
.RS 4
Show terse runtime status information about one or more logged in users, followed by the most recent log data from the journal\&. Takes one or more user names or numeric user IDs as parameters\&. If no parameters are passed, the status is shown for the user of the session of the caller\&. This function is intended to generate human\-readable output\&. If you are looking for computer\-parsable output, use
\fBshow\-user\fR
instead\&.
.RE
.PP
\fBshow\-user\fR [\fIUSER\fR\&...]
.RS 4
Show properties of one or more users or the manager itself\&. If no argument is specified, properties of the manager will be shown\&. If a user is specified, properties of the user are shown\&. By default, empty properties are suppressed\&. Use
\fB\-\-all\fR
to show those too\&. To select specific properties to show, use
\fB\-\-property=\fR\&. This command is intended to be used whenever computer\-parsable output is required\&. Use
\fBuser\-status\fR
if you are looking for formatted human\-readable output\&.
.RE
.PP
\fBenable\-linger\fR [\fIUSER\fR\&...], \fBdisable\-linger\fR [\fIUSER\fR\&...]
.RS 4
Enable/disable user lingering for one or more users\&. If enabled for a specific user, a user manager is spawned for the user at boot and kept around after logouts\&. This allows users who are not logged in to run long\-running services\&. Takes one or more user names or numeric UIDs as argument\&. If no argument is specified, enables/disables lingering for the user of the session of the caller\&.
.sp
See also
\fIKillUserProcesses=\fR
setting in
\fBlogind.conf\fR(5)\&.
.RE
.PP
\fBterminate\-user\fR \fIUSER\fR\&...
.RS 4
Terminates all sessions of a user\&. This kills all processes of all sessions of the user and deallocates all runtime resources attached to the user\&.
.RE
.PP
\fBkill\-user\fR \fIUSER\fR\&...
.RS 4
Send a signal to all processes of a user\&. Use
\fB\-\-signal=\fR
to select the signal to send\&.
.RE
.SS "Seat Commands"
.PP
\fBlist\-seats\fR
.RS 4
List currently available seats on the local system\&.
.RE
.PP
\fBseat\-status\fR [\fINAME\fR\&...]
.RS 4
Show terse runtime status information about one or more seats\&. Takes one or more seat names as parameters\&. If no seat names are passed the status of the caller\*(Aqs session\*(Aqs seat is shown\&. This function is intended to generate human\-readable output\&. If you are looking for computer\-parsable output, use
\fBshow\-seat\fR
instead\&.
.RE
.PP
\fBshow\-seat\fR [\fINAME\fR\&...]
.RS 4
Show properties of one or more seats or the manager itself\&. If no argument is specified, properties of the manager will be shown\&. If a seat is specified, properties of the seat are shown\&. By default, empty properties are suppressed\&. Use
\fB\-\-all\fR
to show those too\&. To select specific properties to show, use
\fB\-\-property=\fR\&. This command is intended to be used whenever computer\-parsable output is required\&. Use
\fBseat\-status\fR
if you are looking for formatted human\-readable output\&.
.RE
.PP
\fBattach\fR \fINAME\fR \fIDEVICE\fR\&...
.RS 4
Persistently attach one or more devices to a seat\&. The devices should be specified via device paths in the
/sys
file system\&. To create a new seat, attach at least one graphics card to a previously unused seat name\&. Seat names may consist only of a\(enz, A\(enZ, 0\(en9,
"\-"
and
"_"
and must be prefixed with
"seat"\&. To drop assignment of a device to a specific seat, just reassign it to a different seat, or use
\fBflush\-devices\fR\&.
.RE
.PP
\fBflush\-devices\fR
.RS 4
Removes all device assignments previously created with
\fBattach\fR\&. After this call, only automatically generated seats will remain, and all seat hardware is assigned to them\&.
.RE
.PP
\fBterminate\-seat\fR \fINAME\fR\&...
.RS 4
Terminates all sessions on a seat\&. This kills all processes of all sessions on the seat and deallocates all runtime resources attached to them\&.
.RE
.SH "EXIT STATUS"
.PP
On success, 0 is returned, a non\-zero failure code otherwise\&.
.SH "EXAMPLES"
.PP
\fBExample\ \&1.\ \&Querying user status\fR
.sp
.if n \{\
.RS 4
.\}
.nf
$ loginctl user\-status
fatima (1005)
           Since: Sat 2016\-04\-09 14:23:31 EDT; 54min ago
           State: active
        Sessions: 5 *3
            Unit: user\-1005\&.slice
                  ├─user@1005\&.service
                    \&...
                  ├─session\-3\&.scope
                    \&...
                  └─session\-5\&.scope
                    ├─3473 login \-\- fatima
                    └─3515 \-zsh

Apr 09 14:40:30 laptop login[2325]: pam_unix(login:session):
                       session opened for user fatima by LOGIN(uid=0)
Apr 09 14:40:30 laptop login[2325]: LOGIN ON tty3 BY fatima
.fi
.if n \{\
.RE
.\}
.PP
There are two sessions, 3 and 5\&. Session 3 is a graphical session, marked with a star\&. The tree of processing including the two corresponding scope units and the user manager unit are shown\&.
.SH "ENVIRONMENT"
.PP
\fI$SYSTEMD_PAGER\fR
.RS 4
Pager to use when
\fB\-\-no\-pager\fR
is not given; overrides
\fI$PAGER\fR\&. If neither
\fI$SYSTEMD_PAGER\fR
nor
\fI$PAGER\fR
are set, a set of well\-known pager implementations are tried in turn, including
\fBless\fR(1)
and
\fBmore\fR(1), until one is found\&. If no pager implementation is discovered no pager is invoked\&. Setting this environment variable to an empty string or the value
"cat"
is equivalent to passing
\fB\-\-no\-pager\fR\&.
.RE
.PP
\fI$SYSTEMD_LESS\fR
.RS 4
Override the options passed to
\fBless\fR
(by default
"FRSXMK")\&.
.RE
.PP
\fI$SYSTEMD_LESSCHARSET\fR
.RS 4
Override the charset passed to
\fBless\fR
(by default
"utf\-8", if the invoking terminal is determined to be UTF\-8 compatible)\&.
.RE
.PP
\fI$SYSTEMD_PAGERSECURE\fR
.RS 4
Takes a boolean argument\&. When true, the "secure" mode of the pager is enabled; if false, disabled\&. If
\fI$SYSTEMD_PAGERSECURE\fR
is not set at all, secure mode is enabled if the effective UID is not the same as the owner of the login session, see
\fBgeteuid\fR(2)
and
\fBsd_pid_get_owner_uid\fR(3)\&. In secure mode,
\fBLESSSECURE=1\fR
will be set when invoking the pager, and the pager shall disable commands that open or create new files or start new subprocesses\&. When
\fI$SYSTEMD_PAGERSECURE\fR
is not set at all, pagers which are not known to implement secure mode will not be used\&. (Currently only
\fBless\fR(1)
implements secure mode\&.)
.sp
Note: when commands are invoked with elevated privileges, for example under
\fBsudo\fR(8)
or
\fBpkexec\fR(1), care must be taken to ensure that unintended interactive features are not enabled\&. "Secure" mode for the pager may be enabled automatically as describe above\&. Setting
\fISYSTEMD_PAGERSECURE=0\fR
or not removing it from the inherited environment allows the user to invoke arbitrary commands\&. Note that if the
\fI$SYSTEMD_PAGER\fR
or
\fI$PAGER\fR
variables are to be honoured,
\fI$SYSTEMD_PAGERSECURE\fR
must be set too\&. It might be reasonable to completly disable the pager using
\fB\-\-no\-pager\fR
instead\&.
.RE
.SH "SEE ALSO"
.PP
\fBsystemd\fR(1),
\fBsystemctl\fR(1),
\fBsystemd-logind.service\fR(8),
\fBlogind.conf\fR(5)
