loginctl - Control the elogind login manager
loginctl [OPTIONS...] {COMMAND} [NAME...]
/lib/elogind/system-shutdown
/lib/elogind/system-sleep
loginctl may be used to introspect and control the state of
the
elogind(8) login manager
The following options are understood:
--no-ask-password
Do not query the user for authentication for privileged
operations.
-p, --property=
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.
--value
When showing session/user/seat properties, only print the
value, and skip the property name and "=".
-a, --all
When showing session/user/seat properties, show all
properties regardless of whether they are set or not.
-l, --full
Do not ellipsize process tree entries.
--kill-who=
When used with kill-session, choose which
processes to kill. Must be one of leader, or all to select
whether to kill only the leader process of the session or all processes of the
session. If omitted, defaults to all.
-s, --signal=
When used with kill-session or kill-user,
choose which signal to send to selected processes. Must be one of the well
known signal specifiers, such as SIGTERM, SIGINT or
SIGSTOP. If omitted, defaults to SIGTERM.
-H, --host=
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 machinectl -H HOST.
-M, --machine=
Execute operation on a local container. Specify a
container name to connect to.
--no-pager
Do not pipe output into a pager.
--no-legend
Do not print the legend, i.e. column headers and the
footer with hints.
-h, --help
Print a short help text and exit.
--version
Print a short version string and exit.
The following commands are understood:
list-sessions
List current sessions.
session-status [ID...]
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 show-session instead.
show-session [ID...]
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 --all to show those too. To select
specific properties to show, use --property=. This command is intended
to be used whenever computer-parsable output is required. Use
session-status if you are looking for formatted human-readable
output.
activate [ID]
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.
lock-session [ID...], unlock-session
[ID...]
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.
lock-sessions, unlock-sessions
Activates/deactivates the screen lock on all current
sessions supporting it.
terminate-session ID...
Terminates a session. This kills all processes of the
session and deallocates all resources attached to the session.
kill-session ID...
Send a signal to one or more processes of the session.
Use --kill-who= to select which process to kill. Use --signal=
to select the signal to send.
list-users
List currently logged in users.
user-status [USER...]
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 show-user instead.
show-user [USER...]
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 --all to show those too. To select
specific properties to show, use --property=. This command is intended
to be used whenever computer-parsable output is required. Use
user-status if you are looking for formatted human-readable
output.
terminate-user USER...
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.
kill-user USER...
Send a signal to all processes of a user. Use
--signal= to select the signal to send.
list-seats
List currently available seats on the local system.
seat-status [NAME...]
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 show-seat instead.
show-seat [NAME...]
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 --all to show those too. To select
specific properties to show, use --property=. This command is intended
to be used whenever computer-parsable output is required. Use
seat-status if you are looking for formatted human-readable
output.
attach NAME DEVICE...
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–z, A–Z, 0–9,
"-" 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 flush-devices.
flush-devices
Removes all device assignments previously created with
attach. After this call, only automatically generated seats will
remain, and all seat hardware is assigned to them.
terminate-seat NAME...
Terminates all sessions on a seat. This kills all
processes of all sessions on the seat and deallocates all runtime resources
attached to them.
poweroff
Print a wall message to all users, shut down and
power-off the system.
reboot [arg]
Print a wall message to all users, shut down and reboot
the system.
If the optional argument arg is given, it will be passed as
the optional argument to the reboot(2) system call. The value is
architecture and firmware specific. As an example, "recovery"
might be used to trigger system recovery, and "fota" might be used
to trigger a “firmware over the air” update.
suspend
Suspend the system.
hibernate
Hibernate the system.
hybrid-sleep
Hibernate and suspend the system.
suspend-then-hibernate
Suspend the system, wake after a period of time and put
it into hibernate
Immediately before entering system suspend and/or hibernation
elogind will run all executables in [/usr]/lib/elogind/system-sleep/ and
pass two arguments to them. The first argument will be "pre", the
second either "suspend", "hibernate",
"hybrid-sleep", or "suspend-then-hibernate" depending on
the chosen action. Immediately after leaving system suspend and/or
hibernation the same executables are run, but the first argument is now
"post". All executables in this directory are executed
sequentially, and execution of the action is not continued until all
executables have finished.
Note that scripts or binaries dropped in
[/usr]/lib/elogind/system-sleep/ are intended for local use only and should
be considered hacks. If applications want to react to system
suspend/hibernation and resume, they should rather use the Inhibitor
interface[1].
Immediately before executing the actual system poweroff/reboot
elogind will run all executables in [/usr]/lib/elogind/system-shutdown/ and
pass one arguments to them, either "poweroff" or
"reboot", depending on the chosen action. All executables in this
directory are executed sequentially, and execution of the action is not
continued before all executables finished.
Whether the executables in these directories run successfully or
not is of no concern to elogind. If you want the scripts to cause the action
to be cancelled if one fails, you can set
"AllowPowerOffInterrupts" and/or
"AllowSuspendInterrupts" to "yes" in
/etc/elogind/logind.conf. For this to work the executables in question must
print an error message to "STDOUT" that begins with either of
these keywords: "CANCELLED", "CRITICAL",
"ERROR" or "FAILED". If you want any of these words in a
message without causing the action to be cancelled, just re-arrange the
sentence in question so that the keyword is not the first word.
On success, 0 is returned, a non-zero failure code otherwise.
Example 1. Querying user status
$ 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
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.
$SYSTEMD_PAGER
Pager to use when
--no-pager is not given;
overrides
$PAGER. If neither
$SYSTEMD_PAGER nor
$PAGER
are set, a set of well-known pager implementations are tried in turn,
including
less(1) and
more(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
--no-pager.
$SYSTEMD_LESS
Override the options passed to less (by default
"FRSXMK").
$SYSTEMD_LESSCHARSET
Override the charset passed to less (by default
"utf-8", if the invoking terminal is determined to be UTF-8
compatible).
- 1.
- Inhibitor interface
https://www.freedesktop.org/wiki/Software/systemd/inhibit