<chapter xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="sec-user-sessions">
  <title>User Sessions</title>
  <para>
    Systemd keeps track of all users who are logged into the system
    (e.g. on a virtual console or remotely via SSH). The command
    <literal>loginctl</literal> allows querying and manipulating user
    sessions. For instance, to list all user sessions:
  </para>
  <programlisting>
$ loginctl
   SESSION        UID USER             SEAT
        c1        500 eelco            seat0
        c3          0 root             seat0
        c4        500 alice
</programlisting>
  <para>
    This shows that two users are logged in locally, while another is
    logged in remotely. (<quote>Seats</quote> are essentially the
    combinations of displays and input devices attached to the system;
    usually, there is only one seat.) To get information about a
    session:
  </para>
  <programlisting>
$ loginctl session-status c3
c3 - root (0)
           Since: Tue, 2013-01-08 01:17:56 CET; 4min 42s ago
          Leader: 2536 (login)
            Seat: seat0; vc3
             TTY: /dev/tty3
         Service: login; type tty; class user
           State: online
          CGroup: name=systemd:/user/root/c3
                  ├─ 2536 /nix/store/10mn4xip9n7y9bxqwnsx7xwx2v2g34xn-shadow-4.1.5.1/bin/login --
                  ├─10339 -bash
                  └─10355 w3m nixos.org
</programlisting>
  <para>
    This shows that the user is logged in on virtual console 3. It also
    lists the processes belonging to this session. Since systemd keeps
    track of this, you can terminate a session in a way that ensures
    that all the session’s processes are gone:
  </para>
  <programlisting>
# loginctl terminate-session c3
</programlisting>
</chapter>
