1 <?xml version='1.0'?> <!--*- Mode: nxml; nxml-child-indent: 2; indent-tabs-mode: nil -*-->
2 <!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
3 "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
6 SPDX-License-Identifier: LGPL-2.1+
8 This file is part of elogind.
10 Copyright 2010 Lennart Poettering
13 <refentry id="elogind"
14 xmlns:xi="http://www.w3.org/2001/XInclude">
17 <title>elogind</title>
18 <productname>elogind</productname>
22 <contrib>Developer</contrib>
23 <firstname>Lennart</firstname>
24 <surname>Poettering</surname>
25 <email>lennart@poettering.net</email>
31 <refentrytitle>elogind</refentrytitle>
32 <!-- 0 /// elogind is in section 8
33 <manvolnum>1</manvolnum>
35 <manvolnum>8</manvolnum>
40 <!-- 0 /// Well, elogind isn't that much...
41 <refname>systemd</refname>
42 <refname>init</refname>
43 <refpurpose>systemd system and service manager</refpurpose>
45 <refname>elogind</refname>
46 <refpurpose>Login manager</refpurpose>
51 <!-- 0 /// elogind has a different synopsis of course...
53 <command>/usr/lib/systemd/systemd</command>
54 <arg choice="opt" rep="repeat">OPTIONS</arg>
57 <command>init</command>
58 <arg choice="opt" rep="repeat">OPTIONS</arg>
59 <arg choice="req">COMMAND</arg>
63 <command>elogind</command>
64 <arg choice="opt" rep="repeat">OPTIONS</arg>
65 <arg choice="req">COMMAND</arg>
71 <title>Description</title>
73 <!-- 0 /// elogind does not need that much explanation.
74 <para>systemd is a system and service manager for Linux operating
75 systems. When run as first process on boot (as PID 1), it acts as
76 init system that brings up and maintains userspace
79 <para>For compatibility with SysV, if systemd is called as
80 <command>init</command> and a PID that is not 1, it will execute
81 <command>telinit</command> and pass all command line arguments
82 unmodified. That means <command>init</command> and
83 <command>telinit</command> are mostly equivalent when invoked from
84 normal login sessions. See
85 <citerefentry><refentrytitle>telinit</refentrytitle><manvolnum>8</manvolnum></citerefentry>
86 for more information.</para>
88 <para>When run as a system instance, systemd interprets the
89 configuration file <filename>system.conf</filename> and the files
90 in <filename>system.conf.d</filename> directories; when run as a
91 user instance, systemd interprets the configuration file
92 <filename>user.conf</filename> and the files in
93 <filename>user.conf.d</filename> directories. See
94 <citerefentry><refentrytitle>systemd-system.conf</refentrytitle><manvolnum>5</manvolnum></citerefentry>
95 for more information.</para>
97 <para><command>elogind</command> is a system service that
98 manages user logins. It is responsible for:</para>
101 <listitem><para>Keeping track of users and sessions, their
102 processes and their idle state</para></listitem>
104 <listitem><para>Providing PolicyKit-based access for users to
105 operations such as system shutdown or sleep</para></listitem>
107 <listitem><para>Implementing a shutdown/sleep inhibition logic
108 for applications</para></listitem>
110 <listitem><para>Handling of power/sleep hardware
111 keys</para></listitem>
113 <listitem><para>Multi-seat management</para></listitem>
115 <listitem><para>Session switch management</para></listitem>
117 <listitem><para>Device access management for
118 users</para></listitem>
122 <para>User sessions are registered in elogind via the
123 <citerefentry><refentrytitle>pam_elogind</refentrytitle><manvolnum>8</manvolnum></citerefentry>
127 <citerefentry><refentrytitle>logind.conf</refentrytitle><manvolnum>5</manvolnum></citerefentry>
128 for information about the configuration of this service.</para>
131 url="http://www.freedesktop.org/wiki/Software/systemd/multiseat">Multi-Seat
132 on Linux</ulink> for an introduction into basic concepts of logind
133 such as users, sessions and seats.</para>
136 url="http://www.freedesktop.org/wiki/Software/systemd/logind">
137 logind D-Bus API Documentation</ulink> for information about the
138 APIs <filename>logind</filename> provides.</para>
140 <para>For more information on the inhibition logic see the <ulink
141 url="http://www.freedesktop.org/wiki/Software/systemd/inhibit">Inhibitor
142 Lock Developer Documentation</ulink>.</para>
147 <title>Options</title>
149 <para>The following options are understood:</para>
152 <!-- 0 /// This list is much shorter with elogind of course.
154 <term><option>--test</option></term>
156 <listitem><para>Determine startup sequence, dump it and exit.
157 This is an option useful for debugging only.</para></listitem>
160 <term><option>--dump-configuration-items</option></term>
162 <listitem><para>Dump understood unit configuration items. This
163 outputs a terse but complete list of configuration items
164 understood in unit definition files.</para></listitem>
167 <term><option>--unit=</option></term>
169 <listitem><para>Set default unit to activate on startup. If
170 not specified, defaults to
171 <filename>default.target</filename>.</para></listitem>
174 <term><option>--system</option></term>
175 <term><option>--user</option></term>
177 <listitem><para>For <option>--system</option>, tell systemd to
178 run a system instance, even if the process ID is not 1, i.e.
179 systemd is not run as init process. <option>--user</option>
180 does the opposite, running a user instance even if the process
181 ID is 1. Normally, it should not be necessary to pass these
182 options, as systemd automatically detects the mode it is
183 started in. These options are hence of little use except for
184 debugging. Note that it is not supported booting and
185 maintaining a full system with systemd running in
186 <option>--system</option> mode, but PID not 1. In practice,
187 passing <option>--system</option> explicitly is only useful in
188 conjunction with <option>--test</option>.</para></listitem>
191 <term><option>--dump-core</option></term>
193 <listitem><para>Enable core dumping on crash. This switch has
194 no effect when running as user instance. This setting may also
195 be enabled during boot on the kernel command line via the
196 <varname>systemd.dump_core=</varname> option, see
197 below.</para></listitem>
201 <term><option>--crash-vt=</option><replaceable>VT</replaceable></term>
203 <listitem><para>Switch to a specific virtual console (VT) on
204 crash. Takes a positive integer in the range 1–63, or a
205 boolean argument. If an integer is passed, selects which VT to
206 switch to. If <constant>yes</constant>, the VT kernel messages
207 are written to is selected. If <constant>no</constant>, no VT
208 switch is attempted. This switch has no effect when running as
209 user instance. This setting may also be enabled during boot,
210 on the kernel command line via the
211 <varname>systemd.crash_vt=</varname> option, see
213 <!-- FIXME: there is no crash_vt command line option? -->
214 <!-- 0 /// elogind check_tree.pl can not mangle closed comments.
215 below.</para></listitem>
219 <term><option>--crash-shell</option></term>
221 <listitem><para>Run a shell on crash. This switch has no
222 effect when running as user instance. This setting may also be
223 enabled during boot, on the kernel command line via the
224 <varname>systemd.crash_shell=</varname> option, see
225 below.</para></listitem>
229 <term><option>--crash-reboot</option></term>
231 <listitem><para>Automatically reboot the system on crash. This
232 switch has no effect when running as user instance. This
233 setting may also be enabled during boot, on the kernel command
234 line via the <varname>systemd.crash_reboot=</varname> option,
235 see below.</para></listitem>
239 <term><option>--confirm-spawn</option></term>
241 <listitem><para>Ask for confirmation when spawning processes.
242 This switch has no effect when run as user
243 instance.</para></listitem>
246 <term><option>--show-status=</option></term>
248 <listitem><para>Takes a boolean argument or the special value <constant>auto</constant>. If on, terse unit
249 status information is shown on the console during boot-up and shutdown. If off, no such status information is
250 shown. If set to <constant>auto</constant> behavior is similar to off, except that it is automatically switched
251 to on, as soon as the first unit failure or significant boot delay is encountered. This switch has no effect
252 when invoked as user instance. If specified, overrides both the kernel command line setting
253 <varname>systemd.show_status=</varname> (see below) and the configuration file option
254 <option>ShowStatus=</option>, see
255 <citerefentry><refentrytitle>systemd-system.conf</refentrytitle><manvolnum>5</manvolnum></citerefentry>.</para></listitem>
258 <term><option>--log-target=</option></term>
260 <listitem><para>Set log target. Argument must be one of
261 <option>console</option>,
262 <option>journal</option>,
263 <option>kmsg</option>,
264 <option>journal-or-kmsg</option>,
265 <option>null</option>.</para></listitem>
268 <term><option>--log-level=</option></term>
270 <listitem><para>Set log level. As
271 argument this accepts a numerical log
272 level or the well-known <citerefentry project='man-pages'><refentrytitle>syslog</refentrytitle><manvolnum>3</manvolnum></citerefentry>
273 symbolic names (lowercase):
274 <option>emerg</option>,
275 <option>alert</option>,
276 <option>crit</option>,
277 <option>err</option>,
278 <option>warning</option>,
279 <option>notice</option>,
280 <option>info</option>,
281 <option>debug</option>.</para></listitem>
284 <term><option>--log-color=</option></term>
286 <listitem><para>Highlight important log messages. Argument is
287 a boolean value. If the argument is omitted, it defaults to
288 <option>true</option>.</para></listitem>
291 <term><option>--log-location=</option></term>
293 <listitem><para>Include code location in log messages. This is
294 mostly relevant for debugging purposes. Argument is a boolean
295 value. If the argument is omitted it defaults to
296 <option>true</option>.</para></listitem>
299 <term><option>--default-standard-output=</option></term>
300 <term><option>--default-standard-error=</option></term>
302 <listitem><para>Sets the default output or error output for
303 all services and sockets, respectively. That is, controls the
304 default for <option>StandardOutput=</option> and
305 <option>StandardError=</option> (see
306 <citerefentry><refentrytitle>systemd.exec</refentrytitle><manvolnum>5</manvolnum></citerefentry>
307 for details). Takes one of
308 <option>inherit</option>,
309 <option>null</option>,
310 <option>tty</option>,
311 <option>journal</option>,
312 <option>journal+console</option>,
313 <option>syslog</option>,
314 <option>syslog+console</option>,
315 <option>kmsg</option>,
316 <option>kmsg+console</option>. If the
318 <option>--default-standard-output=</option> defaults to
319 <option>journal</option> and
320 <option>--default-standard-error=</option> to
321 <option>inherit</option>.</para></listitem>
325 <term><option>--machine-id=</option></term>
327 <listitem><para>Override the machine-id set on the hard drive,
328 useful for network booting or for containers. May not be set
329 to all zeros.</para></listitem>
333 <term><option>--service-watchdogs=</option></term>
335 <listitem><para>Globally enable/disable all service watchdog timeouts and emergency
336 actions. This setting may also be specified during boot, on the kernel
337 command line via the <varname>systemd.service_watchdogs=</varname>
338 option, see below. Defaults to enabled.</para></listitem>
341 <xi:include href="standard-options.xml" xpointer="help" />
342 <xi:include href="standard-options.xml" xpointer="version" />
345 <term><option>-D</option></term>
346 <term><option>--daemon</option></term>
348 <listitem><para>Daemonize elogind by double-forking
349 into background.</para></listitem>
353 <term><option>-h</option></term>
354 <term><option>--help</option></term>
356 <listitem><para>Show the helpt text and exit.</para></listitem>
362 <!-- 0 /// The whole concpets section is unneeded in elogind
364 <title>Concepts</title>
366 <para>systemd provides a dependency system between various
367 entities called "units" of 11 different types. Units encapsulate
368 various objects that are relevant for system boot-up and
369 maintenance. The majority of units are configured in unit
370 configuration files, whose syntax and basic set of options is
372 <citerefentry><refentrytitle>systemd.unit</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
373 however some are created automatically from other configuration,
374 dynamically from system state or programmatically at runtime.
375 Units may be "active" (meaning started, bound, plugged in, …,
376 depending on the unit type, see below), or "inactive" (meaning
377 stopped, unbound, unplugged, …), as well as in the process of
378 being activated or deactivated, i.e. between the two states (these
379 states are called "activating", "deactivating"). A special
380 "failed" state is available as well, which is very similar to
381 "inactive" and is entered when the service failed in some way
382 (process returned error code on exit, or crashed, an operation
383 timed out, or after too many restarts). If this state is entered,
384 the cause will be logged, for later reference. Note that the
385 various unit types may have a number of additional substates,
386 which are mapped to the five generalized unit states described
389 <para>The following unit types are available:</para>
392 <listitem><para>Service units, which start and control daemons
393 and the processes they consist of. For details, see
394 <citerefentry><refentrytitle>systemd.service</refentrytitle><manvolnum>5</manvolnum></citerefentry>.</para></listitem>
396 <listitem><para>Socket units, which encapsulate local IPC or
397 network sockets in the system, useful for socket-based
398 activation. For details about socket units, see
399 <citerefentry><refentrytitle>systemd.socket</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
400 for details on socket-based activation and other forms of
402 <citerefentry><refentrytitle>daemon</refentrytitle><manvolnum>7</manvolnum></citerefentry>.</para></listitem>
404 <listitem><para>Target units are useful to group units, or
405 provide well-known synchronization points during boot-up, see
406 <citerefentry><refentrytitle>systemd.target</refentrytitle><manvolnum>5</manvolnum></citerefentry>.</para></listitem>
408 <listitem><para>Device units expose kernel devices in systemd
409 and may be used to implement device-based activation. For
411 <citerefentry><refentrytitle>systemd.device</refentrytitle><manvolnum>5</manvolnum></citerefentry>.</para></listitem>
413 <listitem><para>Mount units control mount points in the file
414 system, for details see
415 <citerefentry><refentrytitle>systemd.mount</refentrytitle><manvolnum>5</manvolnum></citerefentry>.</para></listitem>
417 <listitem><para>Automount units provide automount capabilities,
418 for on-demand mounting of file systems as well as parallelized
420 <citerefentry><refentrytitle>systemd.automount</refentrytitle><manvolnum>5</manvolnum></citerefentry>.</para></listitem>
422 <listitem><para>Timer units are useful for triggering activation
423 of other units based on timers. You may find details in
424 <citerefentry><refentrytitle>systemd.timer</refentrytitle><manvolnum>5</manvolnum></citerefentry>.</para></listitem>
426 <listitem><para>Swap units are very similar to mount units and
427 encapsulate memory swap partitions or files of the operating
428 system. They are described in
429 <citerefentry><refentrytitle>systemd.swap</refentrytitle><manvolnum>5</manvolnum></citerefentry>.</para></listitem>
431 <listitem><para>Path units may be used to activate other
432 services when file system objects change or are modified. See
433 <citerefentry><refentrytitle>systemd.path</refentrytitle><manvolnum>5</manvolnum></citerefentry>.</para></listitem>
435 <listitem><para>Slice units may be used to group units which
436 manage system processes (such as service and scope units) in a
437 hierarchical tree for resource management purposes. See
438 <citerefentry><refentrytitle>systemd.slice</refentrytitle><manvolnum>5</manvolnum></citerefentry>.</para></listitem>
440 <listitem><para>Scope units are similar to service units, but
441 manage foreign processes instead of starting them as well. See
442 <citerefentry><refentrytitle>systemd.scope</refentrytitle><manvolnum>5</manvolnum></citerefentry>.</para></listitem>
446 <para>Units are named as their configuration files. Some units
447 have special semantics. A detailed list is available in
448 <citerefentry><refentrytitle>systemd.special</refentrytitle><manvolnum>7</manvolnum></citerefentry>.</para>
450 <para>systemd knows various kinds of dependencies, including
451 positive and negative requirement dependencies (i.e.
452 <varname>Requires=</varname> and <varname>Conflicts=</varname>) as
453 well as ordering dependencies (<varname>After=</varname> and
454 <varname>Before=</varname>). NB: ordering and requirement
455 dependencies are orthogonal. If only a requirement dependency
456 exists between two units (e.g. <filename>foo.service</filename>
457 requires <filename>bar.service</filename>), but no ordering
458 dependency (e.g. <filename>foo.service</filename> after
459 <filename>bar.service</filename>) and both are requested to start,
460 they will be started in parallel. It is a common pattern that both
461 requirement and ordering dependencies are placed between two
462 units. Also note that the majority of dependencies are implicitly
463 created and maintained by systemd. In most cases, it should be
464 unnecessary to declare additional dependencies manually, however
465 it is possible to do this.</para>
467 <para>Application programs and units (via dependencies) may
468 request state changes of units. In systemd, these requests are
469 encapsulated as 'jobs' and maintained in a job queue. Jobs may
470 succeed or can fail, their execution is ordered based on the
471 ordering dependencies of the units they have been scheduled
474 <para>On boot systemd activates the target unit
475 <filename>default.target</filename> whose job is to activate
476 on-boot services and other on-boot units by pulling them in via
477 dependencies. Usually, the unit name is just an alias (symlink) for
478 either <filename>graphical.target</filename> (for fully-featured
479 boots into the UI) or <filename>multi-user.target</filename> (for
480 limited console-only boots for use in embedded or server
481 environments, or similar; a subset of graphical.target). However,
482 it is at the discretion of the administrator to configure it as an
483 alias to any other target unit. See
484 <citerefentry><refentrytitle>systemd.special</refentrytitle><manvolnum>7</manvolnum></citerefentry>
485 for details about these target units.</para>
487 <para>Processes systemd spawns are placed in individual Linux
488 control groups named after the unit which they belong to in the
489 private systemd hierarchy. (see <ulink
490 url="https://www.kernel.org/doc/Documentation/cgroup-v1/cgroups.txt">cgroups.txt</ulink>
491 for more information about control groups, or short "cgroups").
492 systemd uses this to effectively keep track of processes. Control
493 group information is maintained in the kernel, and is accessible
494 via the file system hierarchy (beneath
495 <filename>/sys/fs/cgroup/systemd/</filename>), or in tools such as
496 <citerefentry project='man-pages'><refentrytitle>systemd-cgls</refentrytitle><manvolnum>1</manvolnum></citerefentry>
498 <citerefentry project='man-pages'><refentrytitle>ps</refentrytitle><manvolnum>1</manvolnum></citerefentry>
499 (<command>ps xawf -eo pid,user,cgroup,args</command> is
500 particularly useful to list all processes and the systemd units
501 they belong to.).</para>
503 <para>systemd is compatible with the SysV init system to a large
504 degree: SysV init scripts are supported and simply read as an
505 alternative (though limited) configuration file format. The SysV
506 <filename>/dev/initctl</filename> interface is provided, and
507 compatibility implementations of the various SysV client tools are
508 available. In addition to that, various established Unix
509 functionality such as <filename>/etc/fstab</filename> or the
510 <filename>utmp</filename> database are supported.</para>
512 <para>systemd has a minimal transaction system: if a unit is
513 requested to start up or shut down it will add it and all its
514 dependencies to a temporary transaction. Then, it will verify if
515 the transaction is consistent (i.e. whether the ordering of all
516 units is cycle-free). If it is not, systemd will try to fix it up,
517 and removes non-essential jobs from the transaction that might
518 remove the loop. Also, systemd tries to suppress non-essential
519 jobs in the transaction that would stop a running service. Finally
520 it is checked whether the jobs of the transaction contradict jobs
521 that have already been queued, and optionally the transaction is
522 aborted then. If all worked out and the transaction is consistent
523 and minimized in its impact it is merged with all already
524 outstanding jobs and added to the run queue. Effectively this
525 means that before executing a requested operation, systemd will
526 verify that it makes sense, fixing it if possible, and only
527 failing if it really cannot work.</para>
529 <para>systemd contains native implementations of various tasks
530 that need to be executed as part of the boot process. For example,
531 it sets the hostname or configures the loopback network device. It
532 also sets up and mounts various API file systems, such as
533 <filename>/sys</filename> or <filename>/proc</filename>.</para>
535 <para>For more information about the concepts and
536 ideas behind systemd, please refer to the
537 <ulink url="http://0pointer.de/blog/projects/systemd.html">Original Design Document</ulink>.</para>
539 <para>Note that some but not all interfaces provided
540 by systemd are covered by the
541 <ulink url="https://www.freedesktop.org/wiki/Software/systemd/InterfaceStabilityPromise">Interface
542 Stability Promise</ulink>.</para>
544 <para>Units may be generated dynamically at boot and system
545 manager reload time, for example based on other configuration
546 files or parameters passed on the kernel command line. For details, see
547 <citerefentry><refentrytitle>systemd.generator</refentrytitle><manvolnum>7</manvolnum></citerefentry>.</para>
549 <para>Systems which invoke systemd in a container or initrd
550 environment should implement the
551 <ulink url="https://www.freedesktop.org/wiki/Software/systemd/ContainerInterface">Container Interface</ulink> or
552 <ulink url="https://www.freedesktop.org/wiki/Software/systemd/InitrdInterface">initrd Interface</ulink>
553 specifications, respectively.</para>
557 <!-- 0 /// The whole directories section is unneeded in elogind
559 <title>Directories</title>
563 <term>System unit directories</term>
565 <listitem><para>The systemd system manager reads unit
566 configuration from various directories. Packages that want to
567 install unit files shall place them in the directory returned
568 by <command>pkg-config systemd
569 --variable=systemdsystemunitdir</command>. Other directories
570 checked are <filename>/usr/local/lib/systemd/system</filename>
571 and <filename>/usr/lib/systemd/system</filename>. User
572 configuration always takes precedence. <command>pkg-config
573 systemd --variable=systemdsystemconfdir</command> returns the
574 path of the system configuration directory. Packages should
575 alter the content of these directories only with the
576 <command>enable</command> and <command>disable</command>
578 <citerefentry><refentrytitle>systemctl</refentrytitle><manvolnum>1</manvolnum></citerefentry>
579 tool. Full list of directories is provided in
580 <citerefentry><refentrytitle>systemd.unit</refentrytitle><manvolnum>5</manvolnum></citerefentry>.
587 <term>User unit directories</term>
589 <listitem><para>Similar rules apply for the user unit
590 directories. However, here the
591 <ulink url="http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html">XDG
592 Base Directory specification</ulink> is followed to find
593 units. Applications should place their unit files in the
594 directory returned by <command>pkg-config systemd
595 --variable=systemduserunitdir</command>. Global configuration
596 is done in the directory reported by <command>pkg-config
597 systemd --variable=systemduserconfdir</command>. The
598 <command>enable</command> and <command>disable</command>
600 <citerefentry><refentrytitle>systemctl</refentrytitle><manvolnum>1</manvolnum></citerefentry>
601 tool can handle both global (i.e. for all users) and private
602 (for one user) enabling/disabling of units. Full list of
603 directories is provided in
604 <citerefentry><refentrytitle>systemd.unit</refentrytitle><manvolnum>5</manvolnum></citerefentry>.
611 <term>SysV init scripts directory</term>
613 <listitem><para>The location of the SysV init script directory
614 varies between distributions. If systemd cannot find a native
615 unit file for a requested service, it will look for a SysV
616 init script of the same name (with the
617 <filename>.service</filename> suffix
618 removed).</para></listitem>
624 <term>SysV runlevel link farm directory</term>
626 <listitem><para>The location of the SysV runlevel link farm
627 directory varies between distributions. systemd will take the
628 link farm into account when figuring out whether a service
629 shall be enabled. Note that a service unit with a native unit
630 configuration file cannot be started by activating it in the
631 SysV runlevel link farm.</para></listitem>
637 <!-- 0 /// The whole Signals section is unneeded in elogind
639 <title>Signals</title>
643 <term><constant>SIGTERM</constant></term>
645 <listitem><para>Upon receiving this signal the systemd system
646 manager serializes its state, reexecutes itself and
647 deserializes the saved state again. This is mostly equivalent
648 to <command>systemctl daemon-reexec</command>.</para>
650 <para>systemd user managers will start the
651 <filename>exit.target</filename> unit when this signal is
652 received. This is mostly equivalent to <command>systemctl
653 --user start exit.target
654 --job-mode=replace-irreversible</command>.</para></listitem>
658 <term><constant>SIGINT</constant></term>
660 <listitem><para>Upon receiving this signal the systemd system
661 manager will start the
662 <filename>ctrl-alt-del.target</filename> unit. This is mostly
663 equivalent to <command>systemctl start ctrl-alt-del.target
664 --job-mode=replace-irreversible</command>. If this signal is
665 received more than 7 times per 2s, an immediate reboot is
666 triggered. Note that pressing Ctrl-Alt-Del on the console
667 will trigger this signal. Hence, if a reboot is hanging,
668 pressing Ctrl-Alt-Del more than 7 times in 2s is a relatively
669 safe way to trigger an immediate reboot.</para>
671 <para>systemd user managers treat this signal the same way as
672 <constant>SIGTERM</constant>.</para></listitem>
676 <term><constant>SIGWINCH</constant></term>
678 <listitem><para>When this signal is received the systemd
679 system manager will start the
680 <filename>kbrequest.target</filename> unit. This is mostly
681 equivalent to <command>systemctl start
682 kbrequest.target</command>.</para>
684 <para>This signal is ignored by systemd user
685 managers.</para></listitem>
689 <term><constant>SIGPWR</constant></term>
691 <listitem><para>When this signal is received the systemd
692 manager will start the <filename>sigpwr.target</filename>
693 unit. This is mostly equivalent to <command>systemctl start
694 sigpwr.target</command>.</para></listitem>
698 <term><constant>SIGUSR1</constant></term>
700 <listitem><para>When this signal is received the systemd
701 manager will try to reconnect to the D-Bus
702 bus.</para></listitem>
706 <term><constant>SIGUSR2</constant></term>
708 <listitem><para>When this signal is received the systemd
709 manager will log its complete state in human-readable form.
710 The data logged is the same as printed by
711 <command>systemd-analyze dump</command>.</para></listitem>
715 <term><constant>SIGHUP</constant></term>
717 <listitem><para>Reloads the complete daemon configuration.
718 This is mostly equivalent to <command>systemctl
719 daemon-reload</command>.</para></listitem>
723 <term><constant>SIGRTMIN+0</constant></term>
725 <listitem><para>Enters default mode, starts the
726 <filename>default.target</filename> unit. This is mostly
727 equivalent to <command>systemctl isolate
728 default.target</command>.</para></listitem>
732 <term><constant>SIGRTMIN+1</constant></term>
734 <listitem><para>Enters rescue mode, starts the
735 <filename>rescue.target</filename> unit. This is mostly
736 equivalent to <command>systemctl isolate
737 rescue.target</command>.</para></listitem>
741 <term><constant>SIGRTMIN+2</constant></term>
743 <listitem><para>Enters emergency mode, starts the
744 <filename>emergency.service</filename> unit. This is mostly
745 equivalent to <command>systemctl isolate
746 emergency.service</command>.</para></listitem>
750 <term><constant>SIGRTMIN+3</constant></term>
752 <listitem><para>Halts the machine, starts the
753 <filename>halt.target</filename> unit. This is mostly
754 equivalent to <command>systemctl start halt.target
755 --job-mode=replace-irreversible</command>.</para>
760 <term><constant>SIGRTMIN+4</constant></term>
762 <listitem><para>Powers off the machine, starts the
763 <filename>poweroff.target</filename> unit. This is mostly
764 equivalent to <command>systemctl start poweroff.target
765 --job-mode=replace-irreversible</command>.</para>
770 <term><constant>SIGRTMIN+5</constant></term>
772 <listitem><para>Reboots the machine, starts the
773 <filename>reboot.target</filename> unit. This is mostly
774 equivalent to <command>systemctl start reboot.target
775 --job-mode=replace-irreversible</command>.</para>
780 <term><constant>SIGRTMIN+6</constant></term>
782 <listitem><para>Reboots the machine via kexec, starts the
783 <filename>kexec.target</filename> unit. This is mostly
784 equivalent to <command>systemctl start kexec.target
785 --job-mode=replace-irreversible</command>.</para>
790 <term><constant>SIGRTMIN+13</constant></term>
792 <listitem><para>Immediately halts the machine.</para></listitem>
796 <term><constant>SIGRTMIN+14</constant></term>
798 <listitem><para>Immediately powers off the machine.</para></listitem>
802 <term><constant>SIGRTMIN+15</constant></term>
804 <listitem><para>Immediately reboots the machine.</para></listitem>
808 <term><constant>SIGRTMIN+16</constant></term>
810 <listitem><para>Immediately reboots the machine with kexec.</para></listitem>
814 <term><constant>SIGRTMIN+20</constant></term>
816 <listitem><para>Enables display of status messages on the
817 console, as controlled via
818 <varname>systemd.show_status=1</varname> on the kernel command
819 line.</para></listitem>
823 <term><constant>SIGRTMIN+21</constant></term>
825 <listitem><para>Disables display of
826 status messages on the console, as
828 <varname>systemd.show_status=0</varname>
829 on the kernel command
830 line.</para></listitem>
834 <term><constant>SIGRTMIN+22</constant></term>
835 <term><constant>SIGRTMIN+23</constant></term>
837 <listitem><para>Sets the log level to <literal>debug</literal>
838 (or <literal>info</literal> on
839 <constant>SIGRTMIN+23</constant>), as controlled via
840 <varname>systemd.log_level=debug</varname> (or
841 <varname>systemd.log_level=info</varname> on
842 <constant>SIGRTMIN+23</constant>) on the kernel command
843 line.</para></listitem>
847 <term><constant>SIGRTMIN+24</constant></term>
849 <listitem><para>Immediately exits the manager (only available
850 for --user instances).</para></listitem>
854 <term><constant>SIGRTMIN+26</constant></term>
855 <term><constant>SIGRTMIN+27</constant></term>
856 <term><constant>SIGRTMIN+28</constant></term>
858 <listitem><para>Sets the log target to
859 <literal>journal-or-kmsg</literal> (or
860 <literal>console</literal> on
861 <constant>SIGRTMIN+27</constant>, <literal>kmsg</literal> on
862 <constant>SIGRTMIN+28</constant>), as controlled via
863 <varname>systemd.log_target=journal-or-kmsg</varname> (or
864 <varname>systemd.log_target=console</varname> on
865 <constant>SIGRTMIN+27</constant> or
866 <varname>systemd.log_target=kmsg</varname> on
867 <constant>SIGRTMIN+28</constant>) on the kernel command
868 line.</para></listitem>
874 <!-- 0 /// The whole environment section is unneeded in elogind
876 <title>Environment</title>
878 <variablelist class='environment-variables'>
880 <term><varname>$SYSTEMD_LOG_LEVEL</varname></term>
881 <listitem><para>systemd reads the log level from this
882 environment variable. This can be overridden with
883 <option>--log-level=</option>.</para></listitem>
887 <term><varname>$SYSTEMD_LOG_TARGET</varname></term>
888 <listitem><para>systemd reads the log target from this
889 environment variable. This can be overridden with
890 <option>--log-target=</option>.</para></listitem>
894 <term><varname>$SYSTEMD_LOG_COLOR</varname></term>
895 <listitem><para>Controls whether systemd highlights important
896 log messages. This can be overridden with
897 <option>--log-color=</option>.</para></listitem>
901 <term><varname>$SYSTEMD_LOG_LOCATION</varname></term>
902 <listitem><para>Controls whether systemd prints the code
903 location along with log messages. This can be overridden with
904 <option>--log-location=</option>.</para></listitem>
908 <term><varname>$XDG_CONFIG_HOME</varname></term>
909 <term><varname>$XDG_CONFIG_DIRS</varname></term>
910 <term><varname>$XDG_DATA_HOME</varname></term>
911 <term><varname>$XDG_DATA_DIRS</varname></term>
913 <listitem><para>The systemd user manager uses these variables
914 in accordance to the <ulink
915 url="http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html">XDG
916 Base Directory specification</ulink> to find its
917 configuration.</para></listitem>
921 <term><varname>$SYSTEMD_UNIT_PATH</varname></term>
923 <listitem><para>Controls where systemd looks for unit
924 files.</para></listitem>
928 <term><varname>$SYSTEMD_SYSVINIT_PATH</varname></term>
930 <listitem><para>Controls where systemd looks for SysV init
931 scripts.</para></listitem>
935 <term><varname>$SYSTEMD_SYSVRCND_PATH</varname></term>
937 <listitem><para>Controls where systemd looks for SysV init
938 script runlevel link farms.</para></listitem>
942 <term><varname>$SYSTEMD_COLORS</varname></term>
944 <listitem><para>The value must be a boolean. Controls whether colorized output should be
945 generated. This can be specified to override the decision that <command>systemd</command>
946 makes based on <varname>$TERM</varname> and what the console is connected to.</para>
951 <term><varname>$SYSTEMD_URLIFY</varname></term>
953 <listitem><para>The value must be a boolean. Controls whether clickable links should be generated in the output
954 for terminal emulators supporting this. This can be specified to override the decision that
955 <command>systemd</command> makes based on <varname>$TERM</varname> and other conditions.</para>
960 <term><varname>$LISTEN_PID</varname></term>
961 <term><varname>$LISTEN_FDS</varname></term>
962 <term><varname>$LISTEN_FDNAMES</varname></term>
964 <listitem><para>Set by systemd for supervised processes during
965 socket-based activation. See
966 <citerefentry><refentrytitle>sd_listen_fds</refentrytitle><manvolnum>3</manvolnum></citerefentry>
967 for more information.</para></listitem>
971 <term><varname>$NOTIFY_SOCKET</varname></term>
973 <listitem><para>Set by systemd for supervised processes for
974 status and start-up completion notification. See
975 <citerefentry><refentrytitle>sd_notify</refentrytitle><manvolnum>3</manvolnum></citerefentry>
976 for more information.</para></listitem>
982 <!-- 0 /// The whole kernel section is unneeded in elogind
984 <title>Kernel Command Line</title>
986 <para>When run as system instance systemd parses a number of
987 kernel command line arguments<footnote><para>If run inside a Linux
988 container these arguments may be passed as command line arguments
989 to systemd itself, next to any of the command line options listed
990 in the Options section above. If run outside of Linux containers,
991 these arguments are parsed from <filename>/proc/cmdline</filename>
992 instead.</para></footnote>:</para>
994 <variablelist class='kernel-commandline-options'>
996 <term><varname>systemd.unit=</varname></term>
997 <term><varname>rd.systemd.unit=</varname></term>
999 <listitem><para>Overrides the unit to activate on boot.
1000 Defaults to <filename>default.target</filename>. This may be
1001 used to temporarily boot into a different boot unit, for
1002 example <filename>rescue.target</filename> or
1003 <filename>emergency.service</filename>. See
1004 <citerefentry><refentrytitle>systemd.special</refentrytitle><manvolnum>7</manvolnum></citerefentry>
1005 for details about these units. The option prefixed with
1006 <literal>rd.</literal> is honored only in the initial RAM disk
1007 (initrd), while the one that is not prefixed only in the main
1008 system.</para></listitem>
1012 <term><varname>systemd.dump_core</varname></term>
1014 <listitem><para>Takes a boolean argument or enables the option if specified
1015 without an argument. If enabled, the systemd manager (PID 1) dumps core when
1016 it crashes. Otherwise, no core dump is created. Defaults to enabled.</para>
1021 <term><varname>systemd.crash_chvt</varname></term>
1023 <listitem><para>Takes a positive integer, or a boolean argument. Can be also
1024 specified without an argument, with the same effect as a positive boolean. If
1025 a positive integer (in the range 1–63) is specified, the system manager (PID
1026 1) will activate the specified virtual terminal (VT) when it
1027 crashes. Defaults to disabled, meaning that no such switch is attempted. If
1028 set to enabled, the VT the kernel messages are written to is selected.
1033 <term><varname>systemd.crash_shell</varname></term>
1035 <listitem><para>Takes a boolean argument or enables the option if specified
1036 without an argument. If enabled, the system manager (PID 1) spawns a shell
1037 when it crashes, after a 10s delay. Otherwise, no shell is spawned. Defaults
1038 to disabled, for security reasons, as the shell is not protected by password
1039 authentication.</para></listitem>
1043 <term><varname>systemd.crash_reboot</varname></term>
1045 <listitem><para>Takes a boolean argument or enables the option if specified
1046 without an argument. If enabled, the system manager (PID 1) will reboot the
1047 machine automatically when it crashes, after a 10s delay. Otherwise, the
1048 system will hang indefinitely. Defaults to disabled, in order to avoid a
1049 reboot loop. If combined with <varname>systemd.crash_shell</varname>, the
1050 system is rebooted after the shell exits.</para></listitem>
1054 <term><varname>systemd.confirm_spawn</varname></term>
1056 <listitem><para>Takes a boolean argument or a path to the virtual console
1057 where the confirmation messages should be emitted. Can be also specified
1058 without an argument, with the same effect as a positive boolean. If enabled,
1059 the system manager (PID 1) asks for confirmation when spawning processes
1060 using <option>/dev/console</option>. If a path or a console name (such as
1061 <literal>ttyS0</literal>) is provided, the virtual console pointed to by this
1062 path or described by the give name will be used instead. Defaults to disabled.
1067 <term><varname>systemd.service_watchdogs=</varname></term>
1069 <listitem><para>Takes a boolean argument. If disabled, all service runtime
1070 watchdogs (<option>WatchdogSec=</option>) and emergency actions (e.g.
1071 <option>OnFailure=</option> or <option>StartLimitAction=</option>) are
1072 ignored by the system manager (PID 1); see
1073 <citerefentry><refentrytitle>systemd.service</refentrytitle><manvolnum>5</manvolnum></citerefentry>.
1074 Defaults to enabled, i.e. watchdogs and failure actions are processed
1075 normally. The hardware watchdog is not affected by this
1076 option.</para></listitem>
1080 <term><varname>systemd.show_status</varname></term>
1082 <listitem><para>Takes a boolean argument or the constant
1083 <constant>auto</constant>. Can be also specified without an argument, with
1084 the same effect as a positive boolean. If enabled, the systemd manager (PID
1085 1) shows terse service status updates on the console during bootup.
1086 <constant>auto</constant> behaves like <option>false</option> until a unit
1087 fails or there is a significant delay in boot. Defaults to enabled, unless
1088 <option>quiet</option> is passed as kernel command line option, in which case
1089 it defaults to <constant>auto</constant>. If specified overrides the system
1090 manager configuration file option <option>ShowStatus=</option>, see
1091 <citerefentry><refentrytitle>systemd-system.conf</refentrytitle><manvolnum>5</manvolnum></citerefentry>.
1092 However, the process command line option <option>--show-status=</option>
1093 takes precedence over both this kernel command line option and the
1094 configuration file option.</para></listitem>
1098 <term><varname>systemd.log_target=</varname></term>
1099 <term><varname>systemd.log_level=</varname></term>
1100 <term><varname>systemd.log_location=</varname></term>
1101 <term><varname>systemd.log_color</varname></term>
1103 <listitem><para>Controls log output, with the same effect as the
1104 <varname>$SYSTEMD_LOG_TARGET</varname>,
1105 <varname>$SYSTEMD_LOG_LEVEL</varname>,
1106 <varname>$SYSTEMD_LOG_LOCATION</varname>,
1107 <varname>$SYSTEMD_LOG_COLOR</varname> environment variables described above.
1108 <varname>systemd.log_color</varname> can be specified without an argument,
1109 with the same effect as a positive boolean.</para></listitem>
1113 <term><varname>systemd.default_standard_output=</varname></term>
1114 <term><varname>systemd.default_standard_error=</varname></term>
1115 <listitem><para>Controls default standard output and error
1116 output for services, with the same effect as the
1117 <option>--default-standard-output=</option> and
1118 <option>--default-standard-error=</option> command line
1119 arguments described above, respectively.</para></listitem>
1123 <term><varname>systemd.setenv=</varname></term>
1125 <listitem><para>Takes a string argument in the form
1126 VARIABLE=VALUE. May be used to set default environment
1127 variables to add to forked child processes. May be used more
1128 than once to set multiple variables.</para></listitem>
1132 <term><varname>systemd.machine_id=</varname></term>
1134 <listitem><para>Takes a 32 character hex value to be
1135 used for setting the machine-id. Intended mostly for
1136 network booting where the same machine-id is desired
1137 for every boot.</para></listitem>
1141 <term><varname>systemd.unified_cgroup_hierarchy</varname></term>
1143 <listitem><para>When specified without an argument or with a true argument,
1144 enables the usage of
1145 <ulink url="https://www.kernel.org/doc/Documentation/cgroup-v2.txt">unified cgroup hierarchy</ulink>
1146 (a.k.a. cgroups-v2). When specified with a false argument, fall back to
1147 hybrid or full legacy cgroup hierarchy.</para>
1149 <para>If this option is not specified, the default behaviour is determined
1150 during compilation (the <option>--with-default-hierarchy=</option>
1151 option). If the kernel does not support unified cgroup hierarchy, the legacy
1152 hierarchy will be used even if this option is specified.</para>
1157 <term><varname>systemd.legacy_systemd_cgroup_controller</varname></term>
1159 <listitem><para>Takes effect if the full unified cgroup hierarchy is not used
1160 (see previous option). When specified without an argument or with a true
1161 argument, disables the use of "hybrid" cgroup hierarchy (i.e. a cgroups-v2
1162 tree used for systemd, and
1163 <ulink url="https://www.kernel.org/doc/Documentation/cgroup-v1/">legacy
1164 cgroup hierarchy</ulink>, a.k.a. cgroups-v1, for other controllers), and
1165 forces a full "legacy" mode. When specified with a false argument, enables
1166 the use of "hybrid" hierarchy.</para>
1168 <para>If this option is not specified, the default behaviour is determined
1169 during compilation (the <option>--with-default-hierarchy=</option>
1170 option). If the kernel does not support unified cgroup hierarchy, the legacy
1171 hierarchy will be used even if this option is specified.</para>
1176 <term><varname>quiet</varname></term>
1178 <listitem><para>Turn off status output at boot, much like
1179 <varname>systemd.show_status=false</varname> would. Note that
1180 this option is also read by the kernel itself and disables
1181 kernel log output. Passing this option hence turns off the
1182 usual output from both the system manager and the kernel.
1187 <term><varname>debug</varname></term>
1189 <listitem><para>Turn on debugging output. This is equivalent
1190 to <varname>systemd.log_level=debug</varname>. Note that this
1191 option is also read by the kernel itself and enables kernel
1192 debug output. Passing this option hence turns on the debug
1193 output from both the system manager and the
1194 kernel.</para></listitem>
1198 <term><varname>emergency</varname></term>
1199 <term><varname>rd.emergency</varname></term>
1200 <term><varname>-b</varname></term>
1202 <listitem><para>Boot into emergency mode. This is equivalent
1203 to <varname>systemd.unit=emergency.target</varname> or
1204 <varname>rd.systemd.unit=emergency.target</varname>, respectively, and
1205 provided for compatibility reasons and to be easier to type.</para></listitem>
1209 <term><varname>rescue</varname></term>
1210 <term><varname>rd.rescue</varname></term>
1211 <term><varname>single</varname></term>
1212 <term><varname>s</varname></term>
1213 <term><varname>S</varname></term>
1214 <term><varname>1</varname></term>
1216 <listitem><para>Boot into rescue mode. This is equivalent to
1217 <varname>systemd.unit=rescue.target</varname> or
1218 <varname>rd.systemd.unit=rescue.target</varname>, respectively, and
1219 provided for compatibility reasons and to be easier to type.</para></listitem>
1223 <term><varname>2</varname></term>
1224 <term><varname>3</varname></term>
1225 <term><varname>4</varname></term>
1226 <term><varname>5</varname></term>
1228 <listitem><para>Boot into the specified legacy SysV runlevel.
1229 These are equivalent to
1230 <varname>systemd.unit=runlevel2.target</varname>,
1231 <varname>systemd.unit=runlevel3.target</varname>,
1232 <varname>systemd.unit=runlevel4.target</varname>, and
1233 <varname>systemd.unit=runlevel5.target</varname>,
1234 respectively, and provided for compatibility reasons and to be
1235 easier to type.</para></listitem>
1239 <term><varname>locale.LANG=</varname></term>
1240 <term><varname>locale.LANGUAGE=</varname></term>
1241 <term><varname>locale.LC_CTYPE=</varname></term>
1242 <term><varname>locale.LC_NUMERIC=</varname></term>
1243 <term><varname>locale.LC_TIME=</varname></term>
1244 <term><varname>locale.LC_COLLATE=</varname></term>
1245 <term><varname>locale.LC_MONETARY=</varname></term>
1246 <term><varname>locale.LC_MESSAGES=</varname></term>
1247 <term><varname>locale.LC_PAPER=</varname></term>
1248 <term><varname>locale.LC_NAME=</varname></term>
1249 <term><varname>locale.LC_ADDRESS=</varname></term>
1250 <term><varname>locale.LC_TELEPHONE=</varname></term>
1251 <term><varname>locale.LC_MEASUREMENT=</varname></term>
1252 <term><varname>locale.LC_IDENTIFICATION=</varname></term>
1254 <listitem><para>Set the system locale to use. This overrides
1255 the settings in <filename>/etc/locale.conf</filename>. For
1256 more information, see
1257 <citerefentry project='man-pages'><refentrytitle>locale.conf</refentrytitle><manvolnum>5</manvolnum></citerefentry>
1259 <citerefentry project='man-pages'><refentrytitle>locale</refentrytitle><manvolnum>7</manvolnum></citerefentry>.
1264 <para>For other kernel command line parameters understood by
1265 components of the core OS, please refer to
1266 <citerefentry><refentrytitle>kernel-command-line</refentrytitle><manvolnum>7</manvolnum></citerefentry>.</para>
1270 <!-- 0 /// The whole sockets section is unneeded in elogind
1272 <title>Sockets and FIFOs</title>
1276 <term><filename>/run/systemd/notify</filename></term>
1278 <listitem><para>Daemon status notification socket. This is an
1279 <constant>AF_UNIX</constant> datagram socket and is used to
1280 implement the daemon notification logic as implemented by
1281 <citerefentry><refentrytitle>sd_notify</refentrytitle><manvolnum>3</manvolnum></citerefentry>.</para></listitem>
1286 <term><filename>/run/systemd/private</filename></term>
1288 <listitem><para>Used internally as communication channel
1290 <citerefentry><refentrytitle>systemctl</refentrytitle><manvolnum>1</manvolnum></citerefentry>
1291 and the systemd process. This is an
1292 <constant>AF_UNIX</constant> stream socket. This interface is
1293 private to systemd and should not be used in external
1294 projects.</para></listitem>
1298 <term><filename>/dev/initctl</filename></term>
1300 <listitem><para>Limited compatibility support for the SysV
1301 client interface, as implemented by the
1302 <filename>systemd-initctl.service</filename> unit. This is a
1303 named pipe in the file system. This interface is obsolete and
1304 should not be used in new applications.</para></listitem>
1311 <title>See Also</title>
1313 <!-- 0 /// elogind does not have that much to see also...
1314 The <ulink url="https://www.freedesktop.org/wiki/Software/systemd/">systemd Homepage</ulink>,
1315 <citerefentry><refentrytitle>systemd-system.conf</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
1316 <citerefentry project='man-pages'><refentrytitle>locale.conf</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
1317 <citerefentry><refentrytitle>systemctl</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
1318 <citerefentry><refentrytitle>journalctl</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
1319 <citerefentry><refentrytitle>systemd-notify</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
1320 <citerefentry><refentrytitle>daemon</refentrytitle><manvolnum>7</manvolnum></citerefentry>,
1321 <citerefentry><refentrytitle>sd-daemon</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
1322 <citerefentry><refentrytitle>systemd.unit</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
1323 <citerefentry><refentrytitle>systemd.special</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
1324 <citerefentry project='die-net'><refentrytitle>pkg-config</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
1325 <citerefentry><refentrytitle>kernel-command-line</refentrytitle><manvolnum>7</manvolnum></citerefentry>,
1326 <citerefentry project='man-pages'><refentrytitle>bootup</refentrytitle><manvolnum>7</manvolnum></citerefentry>,
1327 <citerefentry><refentrytitle>systemd.directives</refentrytitle><manvolnum>7</manvolnum></citerefentry>
1329 The <ulink url="https://github.com/elogind/elogind/">elogind Homepage</ulink>,
1330 <citerefentry><refentrytitle>loginctl</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
1331 <citerefentry><refentrytitle>logind.conf</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
1332 <citerefentry><refentrytitle>pam_elogind</refentrytitle><manvolnum>8</manvolnum></citerefentry>