<?xml version='1.0'?> <!--*-nxml-*-->
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
  "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->

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

  <refentryinfo>
    <title>loginctl</title>
    <productname>systemd</productname>
  </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>Commands</title>

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

    <refsect2><title>Session Commands</title><variablelist>

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

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

      <varlistentry>
        <term><command>session-status</command> <optional><replaceable>ID</replaceable>…</optional></term>

        <listitem><para>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's session is shown. 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> <optional><replaceable>ID</replaceable></optional></term>

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

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

        <listitem><para>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.
        </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. If the argument is specified as empty string the session invoking
        the command is terminated.</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. If the argument is specified as empty string the signal is sent to the
        session invoking the command.</para></listitem>
      </varlistentry>
    </variablelist></refsect2>

    <refsect2><title>User Commands</title><variablelist>
      <varlistentry>
        <term><command>list-users</command></term>

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

      <varlistentry>
        <term><command>user-status</command> <optional><replaceable>USER</replaceable>…</optional></term>

        <listitem><para>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
        <command>show-user</command> instead.</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> <optional><replaceable>USER</replaceable>…</optional></term>
        <term><command>disable-linger</command> <optional><replaceable>USER</replaceable>…</optional></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. 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.</para>

        <para>See also <varname>KillUserProcesses=</varname> setting in
        <citerefentry><refentrytitle>logind.conf</refentrytitle><manvolnum>5</manvolnum></citerefentry>.
        </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. If the argument is specified as
        empty string the sessions of the user invoking the command are terminated.</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. If the argument is specified as empty string the signal is sent to the sessions
        of the user invoking the command.</para></listitem>
      </varlistentry>
    </variablelist></refsect2>

    <refsect2><title>Seat Commands</title><variablelist>
      <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> <optional><replaceable>NAME</replaceable>…</optional></term>

        <listitem><para>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's
        session's seat is shown. 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> <optional><replaceable>NAME</replaceable>…</optional></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></refsect2>

  </refsect1>

  <refsect1>
    <title>Options</title>

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

    <variablelist>
      <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>--value</option></term>

        <listitem><para>When showing session/user/seat properties,
        only print the value, and skip the property name and
        <literal>=</literal>.</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>

        <para>The special value <literal>help</literal> will list the known values and the program will exit
        immediately, and the special value <literal>list</literal> will list known values along with the
        numerical signal numbers and the program will exit immediately.</para></listitem>
      </varlistentry>

      <varlistentry>
        <term><option>-n</option></term>
        <term><option>--lines=</option></term>

        <listitem><para>When used with <command>user-status</command>
        and <command>session-status</command>, controls the number of
        journal lines to show, counting from the most recent ones.
        Takes a positive integer argument. Defaults to 10.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><option>-o</option></term>
        <term><option>--output=</option></term>

        <listitem><para>When used with <command>user-status</command>
        and <command>session-status</command>, controls the formatting
        of the journal entries that are shown. For the available
        choices, see
        <citerefentry><refentrytitle>journalctl</refentrytitle><manvolnum>1</manvolnum></citerefentry>.
        Defaults to <literal>short</literal>.</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="no-pager" />
      <xi:include href="standard-options.xml" xpointer="no-legend" />
      <xi:include href="standard-options.xml" xpointer="help" />
      <xi:include href="standard-options.xml" xpointer="version" />
    </variablelist>
  </refsect1>

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

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

  <refsect1>
    <title>Examples</title>

    <example>
      <title>Querying user status</title>

      <programlisting>$ 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
</programlisting>

      <para>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.</para>
    </example>
  </refsect1>

  <xi:include href="common-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>
