<?xml version='1.0'?> <!--*-nxml-*-->
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
        "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">

<!--
  This file is part of systemd.

  Copyright 2010 Lennart Poettering

  systemd is free software; you can redistribute it and/or modify it
  under the terms of the GNU Lesser General Public License as published by
  the Free Software Foundation; either version 2.1 of the License, or
  (at your option) any later version.

  systemd is distributed in the hope that it will be useful, but
  WITHOUT ANY WARRANTY; without even the implied warranty of
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  Lesser General Public License for more details.

  You should have received a copy of the GNU Lesser General Public License
  along with systemd; If not, see <http://www.gnu.org/licenses/>.
-->

<refentry id="loginctl" conditional='ENABLE_LOGIND'
          xmlns:xi="http://www.w3.org/2001/XInclude">

        <refentryinfo>
                <title>loginctl</title>
                <productname>systemd</productname>

                <authorgroup>
                        <author>
                                <contrib>Developer</contrib>
                                <firstname>Lennart</firstname>
                                <surname>Poettering</surname>
                                <email>lennart@poettering.net</email>
                        </author>
                </authorgroup>
        </refentryinfo>

        <refmeta>
                <refentrytitle>loginctl</refentrytitle>
                <manvolnum>1</manvolnum>
        </refmeta>

        <refnamediv>
                <refname>loginctl</refname>
                <refpurpose>Control the systemd login manager</refpurpose>
        </refnamediv>

        <refsynopsisdiv>
                <cmdsynopsis>
                        <command>loginctl</command>
                        <arg choice="opt" rep="repeat">OPTIONS</arg>
                        <arg choice="req">COMMAND</arg>
                        <arg choice="opt" rep="repeat">NAME</arg>
                </cmdsynopsis>
        </refsynopsisdiv>

        <refsect1>
                <title>Description</title>

                <para><command>loginctl</command> may be used to
                introspect and control the state of the
                <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>
                login manager <citerefentry><refentrytitle>systemd-logind.service</refentrytitle><manvolnum>8</manvolnum></citerefentry>.</para>
        </refsect1>

        <refsect1>
                <title>Options</title>

                <para>The following options are understood:</para>

                <variablelist>
                        <varlistentry>
                                <term><option>--no-legend</option></term>

                                <listitem>
                                        <para>Do not print the legend,
                                        i.e. the column headers and
                                        the footer.</para>
                                </listitem>
                        </varlistentry>

                        <varlistentry>
                                <term><option>--no-ask-password</option></term>

                                <listitem><para>Do not query the user
                                for authentication for privileged
                                operations.</para></listitem>
                        </varlistentry>

                        <varlistentry>
                                <term><option>-p</option></term>
                                <term><option>--property=</option></term>

                                <listitem><para>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
                                <literal>Sessions</literal>. If
                                specified more than once, all
                                properties with the specified names
                                are shown.</para></listitem>
                        </varlistentry>

                        <varlistentry>
                                <term><option>-a</option></term>
                                <term><option>--all</option></term>

                                <listitem><para>When showing
                                session/user/seat properties, show all
                                properties regardless of whether they are
                                set or not.</para></listitem>
                        </varlistentry>

                        <varlistentry>
                                <term><option>-l</option></term>
                                <term><option>--full</option></term>

                                <listitem><para>Do not ellipsize
                                process tree entries.</para>
                                </listitem>
                        </varlistentry>

                        <varlistentry>
                                <term><option>--kill-who=</option></term>

                                <listitem><para>When used with
                                <command>kill-session</command>,
                                choose which processes to kill. Must
                                be one of <option>leader</option>, or
                                <option>all</option> to select whether
                                to kill only the leader process of the
                                session or all processes of the
                                session. If omitted, defaults to
                                <option>all</option>.</para></listitem>
                        </varlistentry>

                        <varlistentry>
                                <term><option>-s</option></term>
                                <term><option>--signal=</option></term>

                                <listitem><para>When used with
                                <command>kill-session</command> or
                                <command>kill-user</command>, choose
                                which signal to send to selected
                                processes. Must be one of the well
                                known signal specifiers, such as
                                <constant>SIGTERM</constant>,
                                <constant>SIGINT</constant> or
                                <constant>SIGSTOP</constant>. If
                                omitted, defaults to
                                <constant>SIGTERM</constant>.</para></listitem>
                        </varlistentry>

                        <xi:include href="user-system-options.xml" xpointer="host" />
                        <xi:include href="user-system-options.xml" xpointer="machine" />

                        <xi:include href="standard-options.xml" xpointer="help" />
                        <xi:include href="standard-options.xml" xpointer="version" />
                        <xi:include href="standard-options.xml" xpointer="no-pager" />
                </variablelist>

                <para>The following commands are understood:</para>

                <variablelist>
                        <varlistentry>
                                <term><command>list-sessions</command></term>

                                <listitem><para>List current sessions.</para></listitem>
                        </varlistentry>

                        <varlistentry>
                                <term><command>session-status</command> <replaceable>ID</replaceable>...</term>

                                <listitem><para>Show terse runtime
                                status information about one or more
                                sessions. This function is intended to
                                generate human-readable output. If you
                                are looking for computer-parsable
                                output, use
                                <command>show-session</command>
                                instead.</para></listitem>
                        </varlistentry>

                        <varlistentry>
                                <term><command>show-session</command> <optional><replaceable>ID</replaceable>...</optional></term>

                                <listitem><para>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 <option>--all</option>
                                to show those too. To select specific
                                properties to show, use
                                <option>--property=</option>. This
                                command is intended to be used
                                whenever computer-parsable output is
                                required. Use
                                <command>session-status</command> if
                                you are looking for formatted
                                human-readable
                                output.</para></listitem>
                        </varlistentry>

                        <varlistentry>
                                <term><command>activate</command> <replaceable>ID</replaceable>...</term>

                                <listitem><para>Activate one or more
                                sessions. This brings one or more
                                sessions into the foreground, if
                                another session is currently in the
                                foreground on the respective
                                seat.</para></listitem>
                        </varlistentry>

                        <varlistentry>
                                <term><command>lock-session</command> <replaceable>ID</replaceable>...</term>
                                <term><command>unlock-session</command> <replaceable>ID</replaceable>...</term>

                                <listitem><para>Activates/deactivates
                                the screen lock on one or more
                                sessions, if the session supports it.
                                </para></listitem>
                        </varlistentry>

                        <varlistentry>
                                <term><command>lock-sessions</command></term>
                                <term><command>unlock-sessions</command></term>

                                <listitem><para>Activates/deactivates
                                the screen lock on all current
                                sessions supporting it.
                                </para></listitem>
                        </varlistentry>

                        <varlistentry>
                                <term><command>terminate-session</command> <replaceable>ID</replaceable>...</term>

                                <listitem><para>Terminates a session.
                                This kills all processes of the
                                session and deallocates all resources
                                attached to the session.
                                </para></listitem>
                        </varlistentry>

                        <varlistentry>
                                <term><command>kill-session</command> <replaceable>ID</replaceable>...</term>

                                <listitem><para>Send a signal to one
                                or more processes of the session. Use
                                <option>--kill-who=</option> to select
                                which process to kill. Use
                                <option>--signal=</option> to select
                                the signal to send.</para></listitem>
                        </varlistentry>

                        <varlistentry>
                                <term><command>list-users</command></term>

                                <listitem><para>List currently logged
                                in users.</para></listitem>
                        </varlistentry>

                        <varlistentry>
                                <term><command>user-status</command> <replaceable>USER</replaceable>...</term>

                                <listitem><para>Show terse runtime
                                status information about one or more
                                logged in users. This function is
                                intended to generate human-readable
                                output. If you are looking for
                                computer-parsable output, use
                                <command>show-user</command> instead.
                                Users may be specified by their
                                usernames or numeric user IDs.
                                </para></listitem>
                        </varlistentry>

                        <varlistentry>
                                <term><command>show-user</command> <optional><replaceable>USER</replaceable>...</optional></term>

                                <listitem><para>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 <option>--all</option>
                                to show those too. To select specific
                                properties to show, use
                                <option>--property=</option>. This
                                command is intended to be used
                                whenever computer-parsable output is
                                required. Use
                                <command>user-status</command> if
                                you are looking for formatted
                                human-readable
                                output.</para></listitem>
                        </varlistentry>

                        <varlistentry>
                                <term><command>enable-linger</command> <replaceable>USER</replaceable>...</term>
                                <term><command>disable-linger</command> <replaceable>USER</replaceable>...</term>

                                <listitem><para>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.</para></listitem>
                        </varlistentry>

                        <varlistentry>
                                <term><command>terminate-user</command> <replaceable>USER</replaceable>...</term>

                                <listitem><para>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.
                                </para></listitem>
                        </varlistentry>

                        <varlistentry>
                                <term><command>kill-user</command> <replaceable>USER</replaceable>...</term>

                                <listitem><para>Send a signal to all
                                processes of a user. Use
                                <option>--signal=</option> to select
                                the signal to send.</para></listitem>
                        </varlistentry>

                        <varlistentry>
                                <term><command>list-seats</command></term>

                                <listitem><para>List currently
                                available seats on the local
                                system.</para></listitem>
                        </varlistentry>

                        <varlistentry>
                                <term><command>seat-status</command> <replaceable>NAME</replaceable>...</term>

                                <listitem><para>Show terse runtime
                                status information about one or more
                                seats. This function is
                                intended to generate human-readable
                                output. If you are looking for
                                computer-parsable output, use
                                <command>show-seat</command>
                                instead.</para></listitem>
                        </varlistentry>

                        <varlistentry>
                                <term><command>show-seat</command> <replaceable>NAME</replaceable>...</term>

                                <listitem><para>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 <option>--all</option>
                                to show those too. To select specific
                                properties to show, use
                                <option>--property=</option>. This
                                command is intended to be used
                                whenever computer-parsable output is
                                required. Use
                                <command>seat-status</command> if you
                                are looking for formatted
                                human-readable
                                output.</para></listitem>
                        </varlistentry>

                        <varlistentry>
                                <term><command>attach</command> <replaceable>NAME</replaceable> <replaceable>DEVICE</replaceable>...</term>

                                <listitem><para>Persistently attach
                                one or more devices to a seat. The
                                devices should be specified via device
                                paths in the <filename>/sys</filename>
                                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-z, A-Z,
                                0-9, <literal>-</literal> and
                                <literal>_</literal> and must be
                                prefixed with <literal>seat</literal>.
                                To drop assignment of a device to a
                                specific seat, just reassign it to a
                                different seat, or use
                                <command>flush-devices</command>.
                                </para></listitem>
                        </varlistentry>

                        <varlistentry>
                                <term><command>flush-devices</command></term>

                                <listitem><para>Removes all device
                                assignments previously created with
                                <command>attach</command>. After this
                                call, only automatically generated
                                seats will remain, and all seat
                                hardware is assigned to
                                them.</para></listitem>
                        </varlistentry>

                        <varlistentry>
                                <term><command>terminate-seat</command> <replaceable>NAME</replaceable>...</term>

                                <listitem><para>Terminates all
                                sessions on a seat. This kills all
                                processes of all sessions on the seat
                                and deallocates all runtime resources
                                attached to them.</para></listitem>
                        </varlistentry>
                </variablelist>

        </refsect1>

        <refsect1>
                <title>Exit status</title>

                <para>On success, 0 is returned, a non-zero failure
                code otherwise.</para>
        </refsect1>

        <xi:include href="less-variables.xml" />

        <refsect1>
                <title>See Also</title>
                <para>
                        <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
                        <citerefentry><refentrytitle>systemctl</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
                        <citerefentry><refentrytitle>systemd-logind.service</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
                        <citerefentry><refentrytitle>logind.conf</refentrytitle><manvolnum>5</manvolnum></citerefentry>
                </para>
        </refsect1>

</refentry>
