<?xml version='1.0'?>
<!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="systemd"
    xmlns:xi="http://www.w3.org/2001/XInclude">

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

  <refmeta>
    <refentrytitle>systemd</refentrytitle>
    <manvolnum>1</manvolnum>
  </refmeta>

  <refnamediv>
    <refname>systemd</refname>
    <refname>init</refname>
    <refpurpose>systemd system and service manager</refpurpose>
  </refnamediv>

  <refsynopsisdiv>
    <cmdsynopsis>
      <command>/usr/lib/systemd/systemd</command>
      <arg choice="opt" rep="repeat">OPTIONS</arg>
    </cmdsynopsis>
    <cmdsynopsis>
      <command>init</command>
      <arg choice="opt" rep="repeat">OPTIONS</arg>
      <arg choice="req">COMMAND</arg>
    </cmdsynopsis>
  </refsynopsisdiv>

  <refsect1>
    <title>Description</title>

    <para>systemd is a system and service manager for Linux operating systems. When run as first process on
    boot (as PID 1), it acts as init system that brings up and maintains userspace services. Separate
    instances are started for logged-in users to start their services.</para>

    <para><command>systemd</command> is usually not invoked directly by the user, but is installed as the
    <filename>/sbin/init</filename> symlink and started during early boot. The user manager instances are
    started automatically through the
    <citerefentry><refentrytitle>user@.service</refentrytitle><manvolnum>5</manvolnum></citerefentry>
    service.</para>

    <para>For compatibility with SysV, if the binary is called as <command>init</command> and is not the
    first process on the machine (PID is not 1), it will execute <command>telinit</command> and pass all
    command line arguments unmodified. That means <command>init</command> and <command>telinit</command> are
    mostly equivalent when invoked from normal login sessions. See
    <citerefentry><refentrytitle>telinit</refentrytitle><manvolnum>8</manvolnum></citerefentry> for more
    information.</para>

    <para>When run as a system instance, systemd interprets the
    configuration file <filename>system.conf</filename> and the files
    in <filename>system.conf.d</filename> directories; when run as a
    user instance, systemd interprets the configuration file
    <filename>user.conf</filename> and the files in
    <filename>user.conf.d</filename> directories. See
    <citerefentry><refentrytitle>systemd-system.conf</refentrytitle><manvolnum>5</manvolnum></citerefentry>
    for more information.</para>
  </refsect1>

  <refsect1>
    <title>Concepts</title>

    <para>systemd provides a dependency system between various
    entities called "units" of 11 different types. Units encapsulate
    various objects that are relevant for system boot-up and
    maintenance. The majority of units are configured in unit
    configuration files, whose syntax and basic set of options is
    described in
    <citerefentry><refentrytitle>systemd.unit</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
    however some are created automatically from other configuration
    files, dynamically from system state or programmatically at runtime.
    Units may be "active" (meaning started, bound, plugged in, …,
    depending on the unit type, see below), or "inactive" (meaning
    stopped, unbound, unplugged, …), as well as in the process of
    being activated or deactivated, i.e. between the two states (these
    states are called "activating", "deactivating"). A special
    "failed" state is available as well, which is very similar to
    "inactive" and is entered when the service failed in some way
    (process returned error code on exit, or crashed, an operation
    timed out, or after too many restarts). If this state is entered,
    the cause will be logged, for later reference. Note that the
    various unit types may have a number of additional substates,
    which are mapped to the five generalized unit states described
    here.</para>

    <para>The following unit types are available:</para>

    <orderedlist>
      <listitem><para>Service units, which start and control daemons
      and the processes they consist of. For details, see
      <citerefentry><refentrytitle>systemd.service</refentrytitle><manvolnum>5</manvolnum></citerefentry>.</para></listitem>

      <listitem><para>Socket units, which encapsulate local IPC or
      network sockets in the system, useful for socket-based
      activation. For details about socket units, see
      <citerefentry><refentrytitle>systemd.socket</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
      for details on socket-based activation and other forms of
      activation, see
      <citerefentry><refentrytitle>daemon</refentrytitle><manvolnum>7</manvolnum></citerefentry>.</para></listitem>

      <listitem><para>Target units are useful to group units, or
      provide well-known synchronization points during boot-up, see
      <citerefentry><refentrytitle>systemd.target</refentrytitle><manvolnum>5</manvolnum></citerefentry>.</para></listitem>

      <listitem><para>Device units expose kernel devices in systemd
      and may be used to implement device-based activation. For
      details, see
      <citerefentry><refentrytitle>systemd.device</refentrytitle><manvolnum>5</manvolnum></citerefentry>.</para></listitem>

      <listitem><para>Mount units control mount points in the file
      system, for details see
      <citerefentry><refentrytitle>systemd.mount</refentrytitle><manvolnum>5</manvolnum></citerefentry>.</para></listitem>

      <listitem><para>Automount units provide automount capabilities,
      for on-demand mounting of file systems as well as parallelized
      boot-up. See
      <citerefentry><refentrytitle>systemd.automount</refentrytitle><manvolnum>5</manvolnum></citerefentry>.</para></listitem>

      <listitem><para>Timer units are useful for triggering activation
      of other units based on timers. You may find details in
      <citerefentry><refentrytitle>systemd.timer</refentrytitle><manvolnum>5</manvolnum></citerefentry>.</para></listitem>

      <listitem><para>Swap units are very similar to mount units and
      encapsulate memory swap partitions or files of the operating
      system. They are described in
      <citerefentry><refentrytitle>systemd.swap</refentrytitle><manvolnum>5</manvolnum></citerefentry>.</para></listitem>

      <listitem><para>Path units may be used to activate other
      services when file system objects change or are modified. See
      <citerefentry><refentrytitle>systemd.path</refentrytitle><manvolnum>5</manvolnum></citerefentry>.</para></listitem>

      <listitem><para>Slice units may be used to group units which
      manage system processes (such as service and scope units) in a
      hierarchical tree for resource management purposes. See
      <citerefentry><refentrytitle>systemd.slice</refentrytitle><manvolnum>5</manvolnum></citerefentry>.</para></listitem>

      <listitem><para>Scope units are similar to service units, but
      manage foreign processes instead of starting them as well. See
      <citerefentry><refentrytitle>systemd.scope</refentrytitle><manvolnum>5</manvolnum></citerefentry>.</para></listitem>

    </orderedlist>

    <para>Units are named as their configuration files. Some units
    have special semantics. A detailed list is available in
    <citerefentry><refentrytitle>systemd.special</refentrytitle><manvolnum>7</manvolnum></citerefentry>.</para>

    <para>systemd knows various kinds of dependencies, including
    positive and negative requirement dependencies (i.e.
    <varname>Requires=</varname> and <varname>Conflicts=</varname>) as
    well as ordering dependencies (<varname>After=</varname> and
    <varname>Before=</varname>). NB: ordering and requirement
    dependencies are orthogonal. If only a requirement dependency
    exists between two units (e.g. <filename>foo.service</filename>
    requires <filename>bar.service</filename>), but no ordering
    dependency (e.g. <filename>foo.service</filename> after
    <filename>bar.service</filename>) and both are requested to start,
    they will be started in parallel. It is a common pattern that both
    requirement and ordering dependencies are placed between two
    units. Also note that the majority of dependencies are implicitly
    created and maintained by systemd. In most cases, it should be
    unnecessary to declare additional dependencies manually, however
    it is possible to do this.</para>

    <para>Application programs and units (via dependencies) may
    request state changes of units. In systemd, these requests are
    encapsulated as 'jobs' and maintained in a job queue. Jobs may
    succeed or can fail, their execution is ordered based on the
    ordering dependencies of the units they have been scheduled
    for.</para>

    <para>On boot systemd activates the target unit
    <filename>default.target</filename> whose job is to activate
    on-boot services and other on-boot units by pulling them in via
    dependencies. Usually, the unit name is just an alias (symlink) for
    either <filename>graphical.target</filename> (for fully-featured
    boots into the UI) or <filename>multi-user.target</filename> (for
    limited console-only boots for use in embedded or server
    environments, or similar; a subset of graphical.target). However,
    it is at the discretion of the administrator to configure it as an
    alias to any other target unit. See
    <citerefentry><refentrytitle>systemd.special</refentrytitle><manvolnum>7</manvolnum></citerefentry>
    for details about these target units.</para>

    <para>On first boot, <command>systemd</command> will enable or disable units according to preset policy.
    See <citerefentry><refentrytitle>systemd.preset</refentrytitle><manvolnum>5</manvolnum></citerefentry>
    and "First Boot Semantics" in
    <citerefentry><refentrytitle>machine-id</refentrytitle><manvolnum>5</manvolnum></citerefentry>.</para>

    <para>systemd only keeps a minimal set of units loaded into memory. Specifically, the only units that are
    kept loaded into memory are those for which at least one of the following conditions is true:</para>

    <orderedlist>
      <listitem><para>It is in an active, activating, deactivating or failed state (i.e. in any unit state except for <literal>inactive</literal>)</para></listitem>
      <listitem><para>It has a job queued for it</para></listitem>
      <listitem><para>It is a dependency of at least one other unit that is loaded into memory</para></listitem>
      <listitem><para>It has some form of resource still allocated (e.g. a service unit that is inactive but for which
      a process is still lingering that ignored the request to be terminated)</para></listitem>
      <listitem><para>It has been pinned into memory programmatically by a D-Bus call</para></listitem>
    </orderedlist>

    <para>systemd will automatically and implicitly load units from disk — if they are not loaded yet — as soon as
    operations are requested for them. Thus, in many respects, the fact whether a unit is loaded or not is invisible to
    clients. Use <command>systemctl list-units --all</command> to comprehensively list all units currently loaded. Any
    unit for which none of the conditions above applies is promptly unloaded. Note that when a unit is unloaded from
    memory its accounting data is flushed out too. However, this data is generally not lost, as a journal log record
    is generated declaring the consumed resources whenever a unit shuts down.</para>

    <para>Processes systemd spawns are placed in individual Linux control groups named after the unit which
    they belong to in the private systemd hierarchy. (see <ulink
    url="https://docs.kernel.org/admin-guide/cgroup-v2.html">Control Groups v2</ulink> for more information
    about control groups, or short "cgroups").  systemd uses this to effectively keep track of
    processes. Control group information is maintained in the kernel, and is accessible via the file system
    hierarchy (beneath <filename>/sys/fs/cgroup/</filename>), or in tools such as <citerefentry
    project='man-pages'><refentrytitle>systemd-cgls</refentrytitle><manvolnum>1</manvolnum></citerefentry> or
    <citerefentry
    project='man-pages'><refentrytitle>ps</refentrytitle><manvolnum>1</manvolnum></citerefentry> (<command>ps
    xawf -eo pid,user,cgroup,args</command> is particularly useful to list all processes and the systemd
    units they belong to.).</para>

    <para>systemd is compatible with the SysV init system to a large
    degree: SysV init scripts are supported and simply read as an
    alternative (though limited) configuration file format. The SysV
    <filename>/dev/initctl</filename> interface is provided, and
    compatibility implementations of the various SysV client tools are
    available. In addition to that, various established Unix
    functionality such as <filename>/etc/fstab</filename> or the
    <filename>utmp</filename> database are supported.</para>

    <para>systemd has a minimal transaction system: if a unit is
    requested to start up or shut down it will add it and all its
    dependencies to a temporary transaction. Then, it will verify if
    the transaction is consistent (i.e. whether the ordering of all
    units is cycle-free). If it is not, systemd will try to fix it up,
    and removes non-essential jobs from the transaction that might
    remove the loop. Also, systemd tries to suppress non-essential
    jobs in the transaction that would stop a running service. Finally
    it is checked whether the jobs of the transaction contradict jobs
    that have already been queued, and optionally the transaction is
    aborted then. If all worked out and the transaction is consistent
    and minimized in its impact it is merged with all already
    outstanding jobs and added to the run queue. Effectively this
    means that before executing a requested operation, systemd will
    verify that it makes sense, fixing it if possible, and only
    failing if it really cannot work.</para>

    <para>Note that transactions are generated independently of a unit's
    state at runtime, hence, for example, if a start job is requested on an
    already started unit, it will still generate a transaction and wake up any
    inactive dependencies (and cause propagation of other jobs as per the
    defined relationships). This is because the enqueued job is at the time of
    execution compared to the target unit's state and is marked successful and
    complete when both satisfy. However, this job also pulls in other
    dependencies due to the defined relationships and thus leads to, in our
    example, start jobs for any of those inactive units getting queued as
    well.</para>

    <para>systemd contains native implementations of various tasks
    that need to be executed as part of the boot process. For example,
    it sets the hostname or configures the loopback network device. It
    also sets up and mounts various API file systems, such as
    <filename>/sys/</filename> or <filename>/proc/</filename>.</para>

    <para>For more information about the concepts and
    ideas behind systemd, please refer to the
    <ulink url="http://0pointer.de/blog/projects/systemd.html">Original Design Document</ulink>.</para>

    <para>Note that some but not all interfaces provided by systemd are covered by the
    <ulink url="https://systemd.io/PORTABILITY_AND_STABILITY/">Interface Portability and Stability Promise</ulink>.</para>

    <para>Units may be generated dynamically at boot and system
    manager reload time, for example based on other configuration
    files or parameters passed on the kernel command line. For details, see
    <citerefentry><refentrytitle>systemd.generator</refentrytitle><manvolnum>7</manvolnum></citerefentry>.</para>

    <para>The D-Bus API of <command>systemd</command> is described in
    <citerefentry><refentrytitle>org.freedesktop.systemd1</refentrytitle><manvolnum>5</manvolnum></citerefentry>
    and
    <citerefentry><refentrytitle>org.freedesktop.LogControl1</refentrytitle><manvolnum>5</manvolnum></citerefentry>.
    </para>

    <para>Systems which invoke systemd in a container or initrd environment should implement the <ulink
    url="https://systemd.io/CONTAINER_INTERFACE">Container Interface</ulink> or
    <ulink url="https://systemd.io/INITRD_INTERFACE/">initrd Interface</ulink>
    specifications, respectively.</para>
  </refsect1>

  <refsect1>
    <title>Directories</title>

    <variablelist>
      <varlistentry>
        <term>System unit directories</term>

        <listitem><para>The systemd system manager reads unit
        configuration from various directories. Packages that want to
        install unit files shall place them in the directory returned
        by <command>pkg-config systemd
        --variable=systemdsystemunitdir</command>. Other directories
        checked are <filename>/usr/local/lib/systemd/system</filename>
        and <filename>/usr/lib/systemd/system</filename>. User
        configuration always takes precedence. <command>pkg-config
        systemd --variable=systemdsystemconfdir</command> returns the
        path of the system configuration directory. Packages should
        alter the content of these directories only with the
        <command>enable</command> and <command>disable</command>
        commands of the
        <citerefentry><refentrytitle>systemctl</refentrytitle><manvolnum>1</manvolnum></citerefentry>
        tool. Full list of directories is provided in
        <citerefentry><refentrytitle>systemd.unit</refentrytitle><manvolnum>5</manvolnum></citerefentry>.
        </para></listitem>
      </varlistentry>
    </variablelist>

    <variablelist>
      <varlistentry>
        <term>User unit directories</term>

        <listitem><para>Similar rules apply for the user unit
        directories. However, here the
        <ulink url="https://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html">XDG
        Base Directory specification</ulink> is followed to find
        units. Applications should place their unit files in the
        directory returned by <command>pkg-config systemd
        --variable=systemduserunitdir</command>. Global configuration
        is done in the directory reported by <command>pkg-config
        systemd --variable=systemduserconfdir</command>. The
        <command>enable</command> and <command>disable</command>
        commands of the
        <citerefentry><refentrytitle>systemctl</refentrytitle><manvolnum>1</manvolnum></citerefentry>
        tool can handle both global (i.e. for all users) and private
        (for one user) enabling/disabling of units. Full list of
        directories is provided in
        <citerefentry><refentrytitle>systemd.unit</refentrytitle><manvolnum>5</manvolnum></citerefentry>.
        </para></listitem>
      </varlistentry>
    </variablelist>

    <variablelist>
      <varlistentry>
        <term>SysV init scripts directory</term>

        <listitem><para>The location of the SysV init script directory
        varies between distributions. If systemd cannot find a native
        unit file for a requested service, it will look for a SysV
        init script of the same name (with the
        <filename>.service</filename> suffix
        removed).</para></listitem>
      </varlistentry>
    </variablelist>

    <variablelist>
      <varlistentry>
        <term>SysV runlevel link farm directory</term>

        <listitem><para>The location of the SysV runlevel link farm
        directory varies between distributions. systemd will take the
        link farm into account when figuring out whether a service
        shall be enabled. Note that a service unit with a native unit
        configuration file cannot be started by activating it in the
        SysV runlevel link farm.</para></listitem>
      </varlistentry>
    </variablelist>
  </refsect1>

  <refsect1>
    <title>Signals</title>

    <variablelist>
      <varlistentry>
        <term><constant>SIGTERM</constant></term>

        <listitem><para>Upon receiving this signal the systemd system
        manager serializes its state, reexecutes itself and
        deserializes the saved state again. This is mostly equivalent
        to <command>systemctl daemon-reexec</command>.</para>

        <para>systemd user managers will start the
        <filename>exit.target</filename> unit when this signal is
        received. This is mostly equivalent to <command>systemctl
        --user start exit.target
        --job-mode=replace-irreversibly</command>.</para></listitem>
      </varlistentry>

      <varlistentry>
        <term><constant>SIGINT</constant></term>

        <listitem><para>Upon receiving this signal the systemd system manager will start the
        <filename>ctrl-alt-del.target</filename> unit. This is mostly equivalent to
        <command>systemctl start ctrl-alt-del.target --job-mode=replace-irreversibly</command>. If
        this signal is received more than 7 times per 2s, an immediate reboot is triggered. Note
        that pressing
        <keycombo><keycap>Ctrl</keycap><keycap>Alt</keycap><keycap>Del</keycap></keycombo> on the
        console will trigger this signal. Hence, if a reboot is hanging, pressing
        <keycombo><keycap>Ctrl</keycap><keycap>Alt</keycap><keycap>Del</keycap></keycombo> more than
        7 times in 2 seconds is a relatively safe way to trigger an immediate reboot.</para>

        <para>systemd user managers treat this signal the same way as
        <constant>SIGTERM</constant>.</para></listitem>
      </varlistentry>

      <varlistentry>
        <term><constant>SIGWINCH</constant></term>

        <listitem><para>When this signal is received the systemd
        system manager will start the
        <filename>kbrequest.target</filename> unit. This is mostly
        equivalent to <command>systemctl start
        kbrequest.target</command>.</para>

        <para>This signal is ignored by systemd user
        managers.</para></listitem>
      </varlistentry>

      <varlistentry>
        <term><constant>SIGPWR</constant></term>

        <listitem><para>When this signal is received the systemd
        manager will start the <filename>sigpwr.target</filename>
        unit. This is mostly equivalent to <command>systemctl start
        sigpwr.target</command>.</para></listitem>
      </varlistentry>

      <varlistentry>
        <term><constant>SIGUSR1</constant></term>

        <listitem><para>When this signal is received the systemd
        manager will try to reconnect to the D-Bus
        bus.</para></listitem>
      </varlistentry>

      <varlistentry>
        <term><constant>SIGUSR2</constant></term>

        <listitem><para>When this signal is received the systemd
        manager will log its complete state in human-readable form.
        The data logged is the same as printed by
        <command>systemd-analyze dump</command>.</para></listitem>
      </varlistentry>

      <varlistentry>
        <term><constant>SIGHUP</constant></term>

        <listitem><para>Reloads the complete daemon configuration.
        This is mostly equivalent to <command>systemctl
        daemon-reload</command>.</para></listitem>
      </varlistentry>

      <varlistentry>
        <term><constant>SIGRTMIN+0</constant></term>

        <listitem><para>Enters default mode, starts the
        <filename>default.target</filename> unit. This is mostly
        equivalent to <command>systemctl isolate
        default.target</command>.</para></listitem>
      </varlistentry>

      <varlistentry>
        <term><constant>SIGRTMIN+1</constant></term>

        <listitem><para>Enters rescue mode, starts the
        <filename>rescue.target</filename> unit. This is mostly
        equivalent to <command>systemctl isolate
        rescue.target</command>.</para></listitem>
      </varlistentry>

      <varlistentry>
        <term><constant>SIGRTMIN+2</constant></term>

        <listitem><para>Enters emergency mode, starts the
        <filename>emergency.service</filename> unit. This is mostly
        equivalent to <command>systemctl isolate
        emergency.service</command>.</para></listitem>
      </varlistentry>

      <varlistentry>
        <term><constant>SIGRTMIN+3</constant></term>

        <listitem><para>Halts the machine, starts the
        <filename>halt.target</filename> unit. This is mostly
        equivalent to <command>systemctl start halt.target
        --job-mode=replace-irreversibly</command>.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><constant>SIGRTMIN+4</constant></term>

        <listitem><para>Powers off the machine, starts the
        <filename>poweroff.target</filename> unit. This is mostly
        equivalent to <command>systemctl start poweroff.target
        --job-mode=replace-irreversibly</command>.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><constant>SIGRTMIN+5</constant></term>

        <listitem><para>Reboots the machine, starts the
        <filename>reboot.target</filename> unit. This is mostly
        equivalent to <command>systemctl start reboot.target
        --job-mode=replace-irreversibly</command>.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><constant>SIGRTMIN+6</constant></term>

        <listitem><para>Reboots the machine via kexec, starts the
        <filename>kexec.target</filename> unit. This is mostly
        equivalent to <command>systemctl start kexec.target
        --job-mode=replace-irreversibly</command>.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><constant>SIGRTMIN+13</constant></term>

        <listitem><para>Immediately halts the machine.</para></listitem>
      </varlistentry>

      <varlistentry>
        <term><constant>SIGRTMIN+14</constant></term>

        <listitem><para>Immediately powers off the machine.</para></listitem>
      </varlistentry>

      <varlistentry>
        <term><constant>SIGRTMIN+15</constant></term>

        <listitem><para>Immediately reboots the machine.</para></listitem>
      </varlistentry>

      <varlistentry>
        <term><constant>SIGRTMIN+16</constant></term>

        <listitem><para>Immediately reboots the machine with kexec.</para></listitem>
      </varlistentry>

      <varlistentry>
        <term><constant>SIGRTMIN+20</constant></term>

        <listitem><para>Enables display of status messages on the
        console, as controlled via
        <varname>systemd.show_status=1</varname> on the kernel command
        line.</para></listitem>
      </varlistentry>

      <varlistentry>
        <term><constant>SIGRTMIN+21</constant></term>

        <listitem><para>Disables display of
        status messages on the console, as
        controlled via
        <varname>systemd.show_status=0</varname>
        on the kernel command
        line.</para></listitem>
      </varlistentry>

      <varlistentry>
        <term><constant>SIGRTMIN+22</constant></term>

        <listitem><para>Sets the service manager's log level to <literal>debug</literal>, in a fashion equivalent to
        <varname>systemd.log_level=debug</varname> on the kernel command line.</para></listitem>
      </varlistentry>

      <varlistentry>
        <term><constant>SIGRTMIN+23</constant></term>

        <listitem><para>Restores the log level to its configured value. The configured value is derived from – in order
        of priority – the value specified with <varname>systemd.log-level=</varname> on the kernel command line, or the
        value specified with <option>LogLevel=</option> in the configuration file, or the built-in default of
        <literal>info</literal>.</para></listitem>
      </varlistentry>

      <varlistentry>
        <term><constant>SIGRTMIN+24</constant></term>

        <listitem><para>Immediately exits the manager (only available
        for --user instances).</para></listitem>
      </varlistentry>

      <varlistentry>
        <term><constant>SIGRTMIN+25</constant></term>

        <listitem><para>Upon receiving this signal the systemd manager will reexecute itself. This
        is mostly equivalent to <command>systemctl daemon-reexec</command> except that it will be
        done asynchronously.</para>

        <para>The systemd system manager treats this signal the same way as
        <constant>SIGTERM</constant>.</para></listitem>
      </varlistentry>

      <varlistentry>
        <term><constant>SIGRTMIN+26</constant></term>

        <listitem><para>Restores the log target to its configured value. The configured value is derived from – in
        order of priority – the value specified with <varname>systemd.log-target=</varname> on the kernel command line,
        or the value specified with <option>LogTarget=</option> in the configuration file, or the built-in
        default.</para></listitem>
      </varlistentry>

      <varlistentry>
        <term><constant>SIGRTMIN+27</constant></term>
        <term><constant>SIGRTMIN+28</constant></term>

        <listitem><para>Sets the log target to <literal>console</literal> on <constant>SIGRTMIN+27</constant> (or
        <literal>kmsg</literal> on <constant>SIGRTMIN+28</constant>), in a fashion equivalent to
        <varname>systemd.log_target=console</varname> (or <varname>systemd.log_target=kmsg</varname> on
        <constant>SIGRTMIN+28</constant>) on the kernel command line.</para></listitem>
      </varlistentry>
    </variablelist>
  </refsect1>

  <refsect1>
    <title>Environment</title>

    <para>The environment block for the system manager is initially set by the kernel. (In particular,
    <literal>key=value</literal> assignments on the kernel command line are turned into environment
    variables for PID 1). For the user manager, the system manager sets the environment as described in the
    "Environment Variables in Spawned Processes" section of
    <citerefentry><refentrytitle>systemd.exec</refentrytitle><manvolnum>5</manvolnum></citerefentry>. The
    <varname>DefaultEnvironment=</varname> setting in the system manager applies to all services including
    <filename>user@.service</filename>. Additional entries may be configured (as for any other service)
    through the <varname>Environment=</varname> and <varname>EnvironmentFile=</varname> settings for
    <filename>user@.service</filename> (see
    <citerefentry><refentrytitle>systemd.exec</refentrytitle><manvolnum>5</manvolnum></citerefentry>). Also,
    additional environment variables may be set through the <varname>ManagerEnvironment=</varname> setting in
    <citerefentry><refentrytitle>systemd-system.conf</refentrytitle><manvolnum>5</manvolnum></citerefentry>
    and
    <citerefentry><refentrytitle>systemd-user.conf</refentrytitle><manvolnum>5</manvolnum></citerefentry>.
    </para>

    <para>Some of the variables understood by <command>systemd</command>:</para>

    <variablelist class='environment-variables'>
      <varlistentry>
        <term><varname>$SYSTEMD_LOG_LEVEL</varname></term>
        <listitem><xi:include href="common-variables.xml" xpointer="log-level-body" />

        <para>This can be overridden with <option>--log-level=</option>.</para></listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>$SYSTEMD_LOG_COLOR</varname></term>
        <listitem><xi:include href="common-variables.xml" xpointer="log-color-body" />

        <para>This can be overridden with <option>--log-color=</option>.</para></listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>$SYSTEMD_LOG_TIME</varname></term>
        <listitem><xi:include href="common-variables.xml" xpointer="log-time-body" />

        <para>This can be overridden with <option>--log-time=</option>.</para></listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>$SYSTEMD_LOG_LOCATION</varname></term>
        <listitem><xi:include href="common-variables.xml" xpointer="log-location-body" />

        <para>This can be overridden with <option>--log-location=</option>.</para></listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>$SYSTEMD_LOG_TID</varname></term>
        <listitem><xi:include href="common-variables.xml" xpointer="log-tid-body" /></listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>$SYSTEMD_LOG_TARGET</varname></term>
        <listitem><xi:include href="common-variables.xml" xpointer="log-target-body" />

        <para>This can be overridden with <option>--log-target=</option>.</para></listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>$XDG_CONFIG_HOME</varname></term>
        <term><varname>$XDG_CONFIG_DIRS</varname></term>
        <term><varname>$XDG_DATA_HOME</varname></term>
        <term><varname>$XDG_DATA_DIRS</varname></term>

        <listitem><para>The systemd user manager uses these variables
        in accordance to the <ulink
        url="https://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html">XDG
        Base Directory specification</ulink> to find its
        configuration.</para></listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>$SYSTEMD_UNIT_PATH</varname></term>
        <term><varname>$SYSTEMD_GENERATOR_PATH</varname></term>
        <term><varname>$SYSTEMD_ENVIRONMENT_GENERATOR_PATH</varname></term>

        <listitem><para>Controls where systemd looks for unit files and
        generators.</para>
        <para>These variables may contain a list of paths, separated by colons
        (<literal>:</literal>). When set, if the list ends with an empty
        component (<literal>...:</literal>), this list is prepended to the
        usual set of paths. Otherwise, the specified list replaces the usual
        set of paths.
        </para></listitem>
      </varlistentry>

      <xi:include href="common-variables.xml" xpointer="pager"/>
      <xi:include href="common-variables.xml" xpointer="less"/>
      <xi:include href="common-variables.xml" xpointer="lesscharset"/>
      <xi:include href="common-variables.xml" xpointer="lesssecure"/>
      <xi:include href="common-variables.xml" xpointer="colors"/>
      <xi:include href="common-variables.xml" xpointer="urlify"/>

      <varlistentry>
        <term><varname>$LISTEN_PID</varname></term>
        <term><varname>$LISTEN_FDS</varname></term>
        <term><varname>$LISTEN_FDNAMES</varname></term>

        <listitem><para>Set by systemd for supervised processes during
        socket-based activation. See
        <citerefentry><refentrytitle>sd_listen_fds</refentrytitle><manvolnum>3</manvolnum></citerefentry>
        for more information.</para></listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>$NOTIFY_SOCKET</varname></term>

        <listitem><para>Set by systemd for supervised processes for
        status and start-up completion notification. See
        <citerefentry><refentrytitle>sd_notify</refentrytitle><manvolnum>3</manvolnum></citerefentry>
        for more information.</para></listitem>
      </varlistentry>
    </variablelist>

    <para>For further environment variables understood by systemd and its various components, see <ulink
    url="https://systemd.io/ENVIRONMENT">Known Environment Variables</ulink>.</para>
  </refsect1>

  <refsect1>
    <title>Kernel Command Line</title>

    <para>When run as the system instance, systemd parses a number of options listed below. They can be
    specified as kernel command line arguments which are parsed from a number of sources depending on the
    environment in which systemd is executed. If run inside a Linux container, these options are parsed from
    the command line arguments passed to systemd itself, next to any of the command line options listed in
    the Options section above. If run outside of Linux containers, these arguments are parsed from
    <filename>/proc/cmdline</filename> and from the <literal>SystemdOptions</literal> EFI variable
    (on EFI systems) instead. Options from <filename>/proc/cmdline</filename> have higher priority. The
    following variables are understood:</para>

    <variablelist class='kernel-commandline-options'>
      <varlistentry>
        <term><varname>systemd.unit=</varname></term>
        <term><varname>rd.systemd.unit=</varname></term>

        <listitem><para>Overrides the unit to activate on boot.  Defaults to
        <filename>default.target</filename>. This may be used to temporarily boot into a different boot unit,
        for example <filename>rescue.target</filename> or <filename>emergency.service</filename>. See
        <citerefentry><refentrytitle>systemd.special</refentrytitle><manvolnum>7</manvolnum></citerefentry>
        for details about these units. The option prefixed with <literal>rd.</literal> is honored only in the
        initrd, while the one that is not prefixed only in the main system.</para></listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>systemd.dump_core</varname></term>

        <listitem><para>Takes a boolean argument or enables the option if specified
        without an argument. If enabled, the systemd manager (PID 1) dumps core when
        it crashes. Otherwise, no core dump is created. Defaults to enabled.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>systemd.crash_chvt</varname></term>

        <listitem><para>Takes a positive integer, or a boolean argument. Can be also specified without an
        argument, with the same effect as a positive boolean. If a positive integer (in the range 1–63) is
        specified, the system manager (PID 1) will activate the specified virtual terminal when it crashes.
        Defaults to disabled, meaning that no such switch is attempted. If set to enabled, the virtual
        terminal the kernel messages are written to is used instead.</para></listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>systemd.crash_shell</varname></term>

        <listitem><para>Takes a boolean argument or enables the option if specified
        without an argument. If enabled, the system manager (PID 1) spawns a shell
        when it crashes, after a 10s delay. Otherwise, no shell is spawned. Defaults
        to disabled, for security reasons, as the shell is not protected by password
        authentication.</para></listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>systemd.crash_reboot</varname></term>

        <listitem><para>Takes a boolean argument or enables the option if specified
        without an argument. If enabled, the system manager (PID 1) will reboot the
        machine automatically when it crashes, after a 10s delay.  Otherwise, the
        system will hang indefinitely. Defaults to disabled, in order to avoid a
        reboot loop. If combined with <varname>systemd.crash_shell</varname>, the
        system is rebooted after the shell exits.</para></listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>systemd.confirm_spawn</varname></term>

        <listitem><para>Takes a boolean argument or a path to the virtual console
        where the confirmation messages should be emitted. Can be also specified
        without an argument, with the same effect as a positive boolean. If enabled,
        the system manager (PID 1) asks for confirmation when spawning processes
        using <option>/dev/console</option>. If a path or a console name (such as
        <literal>ttyS0</literal>) is provided, the virtual console pointed to by this
        path or described by the give name will be used instead. Defaults to disabled.
        </para></listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>systemd.service_watchdogs=</varname></term>

        <listitem><para>Takes a boolean argument. If disabled, all service runtime
        watchdogs (<option>WatchdogSec=</option>) and emergency actions (e.g.
        <option>OnFailure=</option> or <option>StartLimitAction=</option>) are
        ignored by the system manager (PID 1); see
        <citerefentry><refentrytitle>systemd.service</refentrytitle><manvolnum>5</manvolnum></citerefentry>.
        Defaults to enabled, i.e. watchdogs and failure actions are processed
        normally. The hardware watchdog is not affected by this
        option.</para></listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>systemd.show_status</varname></term>

        <listitem><para>Takes a boolean argument or the constants <constant>error</constant> and
        <constant>auto</constant>. Can be also specified without an argument, with the same effect as a
        positive boolean. If enabled, the systemd manager (PID 1) shows terse service status updates on the
        console during bootup. With <constant>error</constant>, only messages about failures are shown, but
        boot is otherwise quiet. <constant>auto</constant> behaves like <option>false</option> until there is
        a significant delay in boot. Defaults to enabled, unless <option>quiet</option> is passed as kernel
        command line option, in which case it defaults to <constant>error</constant>. If specified overrides
        the system manager configuration file option <option>ShowStatus=</option>, see
        <citerefentry><refentrytitle>systemd-system.conf</refentrytitle><manvolnum>5</manvolnum></citerefentry>.
        </para></listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>systemd.status_unit_format=</varname></term>

        <listitem><para>Takes <option>name</option>, <option>description</option> or
        <option>combined</option> as the value. If <option>name</option>, the system manager will use unit
        names in status messages. If <option>combined</option>, the system manager will use unit names and
        description in status messages. When specified, overrides the system manager configuration file
        option <option>StatusUnitFormat=</option>, see
        <citerefentry><refentrytitle>systemd-system.conf</refentrytitle><manvolnum>5</manvolnum></citerefentry>.
        </para></listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>systemd.log_color</varname></term>
        <term><varname>systemd.log_level=</varname></term>
        <term><varname>systemd.log_location</varname></term>
        <term><varname>systemd.log_target=</varname></term>
        <term><varname>systemd.log_time</varname></term>
        <term><varname>systemd.log_tid</varname></term>

        <listitem><para>Controls log output, with the same effect as the
        <varname>$SYSTEMD_LOG_COLOR</varname>, <varname>$SYSTEMD_LOG_LEVEL</varname>,
        <varname>$SYSTEMD_LOG_LOCATION</varname>, <varname>$SYSTEMD_LOG_TARGET</varname>,
        <varname>$SYSTEMD_LOG_TIME</varname>, and <varname>$SYSTEMD_LOG_TID</varname> environment variables
        described above. <varname>systemd.log_color</varname>, <varname>systemd.log_location</varname>,
        <varname>systemd.log_time</varname>, and <varname>systemd.log_tid=</varname> can be specified without
        an argument, with the same effect as a positive boolean.</para></listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>systemd.default_standard_output=</varname></term>
        <term><varname>systemd.default_standard_error=</varname></term>

        <listitem><para>Controls default standard output and error output for services and sockets. That is,
        controls the default for <option>StandardOutput=</option> and <option>StandardError=</option> (see
        <citerefentry><refentrytitle>systemd.exec</refentrytitle><manvolnum>5</manvolnum></citerefentry> for
        details). Takes one of <option>inherit</option>, <option>null</option>, <option>tty</option>,
        <option>journal</option>, <option>journal+console</option>, <option>kmsg</option>,
        <option>kmsg+console</option>. If the argument is omitted
        <varname>systemd.default-standard-output=</varname> defaults to <option>journal</option> and
        <varname>systemd.default-standard-error=</varname> to <option>inherit</option>.</para></listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>systemd.setenv=</varname></term>

        <listitem><para>Takes a string argument in the form
        VARIABLE=VALUE. May be used to set default environment
        variables to add to forked child processes. May be used more
        than once to set multiple variables.</para></listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>systemd.machine_id=</varname></term>

        <listitem><para>Takes a 32 character hex value to be
        used for setting the machine-id. Intended mostly for
        network booting where the same machine-id is desired
        for every boot.</para></listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>systemd.set_credential=</varname></term>

        <listitem><para>Sets a system credential, which can then be propagated to system services using the
        <varname>LoadCredential=</varname> setting, see
        <citerefentry><refentrytitle>systemd.exec</refentrytitle><manvolnum>5</manvolnum></citerefentry> for
        details. Takes a pair of credential name and value, separated by a colon. Note that the kernel
        command line is typically accessible by unprivileged programs in
        <filename>/proc/cmdline</filename>. Thus, this mechanism is not suitable for transferring sensitive
        data. Use it only for data that is not sensitive (e.g. public keys/certificates, rather than private
        keys), or in testing/debugging environments.</para>

        <para>For further information see <ulink url="https://systemd.io/CREDENTIALS">System and Service
        Credentials</ulink> documentation.</para></listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>systemd.import_credentials=</varname></term>

        <listitem><para>Takes a boolean argument. If false disables importing credentials from the kernel
        command line, the DMI/SMBIOS OEM string table, the qemu_fw_cfg subsystem or the EFI kernel
        stub.</para></listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>quiet</varname></term>

        <listitem><para>Turn off status output at boot, much like
        <varname>systemd.show_status=no</varname> would. Note that
        this option is also read by the kernel itself and disables
        kernel log output. Passing this option hence turns off the
        usual output from both the system manager and the kernel.
        </para></listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>debug</varname></term>

        <listitem><para>Turn on debugging output. This is equivalent
        to <varname>systemd.log_level=debug</varname>. Note that this
        option is also read by the kernel itself and enables kernel
        debug output. Passing this option hence turns on the debug
        output from both the system manager and the
        kernel.</para></listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>emergency</varname></term>
        <term><varname>rd.emergency</varname></term>
        <term><varname>-b</varname></term>

        <listitem><para>Boot into emergency mode. This is equivalent
        to <varname>systemd.unit=emergency.target</varname> or
        <varname>rd.systemd.unit=emergency.target</varname>, respectively, and
        provided for compatibility reasons and to be easier to type.</para></listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>rescue</varname></term>
        <term><varname>rd.rescue</varname></term>
        <term><varname>single</varname></term>
        <term><varname>s</varname></term>
        <term><varname>S</varname></term>
        <term><varname>1</varname></term>

        <listitem><para>Boot into rescue mode. This is equivalent to
        <varname>systemd.unit=rescue.target</varname> or
        <varname>rd.systemd.unit=rescue.target</varname>, respectively, and
        provided for compatibility reasons and to be easier to type.</para></listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>2</varname></term>
        <term><varname>3</varname></term>
        <term><varname>4</varname></term>
        <term><varname>5</varname></term>

        <listitem><para>Boot into the specified legacy SysV runlevel.
        These are equivalent to
        <varname>systemd.unit=runlevel2.target</varname>,
        <varname>systemd.unit=runlevel3.target</varname>,
        <varname>systemd.unit=runlevel4.target</varname>, and
        <varname>systemd.unit=runlevel5.target</varname>,
        respectively, and provided for compatibility reasons and to be
        easier to type.</para></listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>locale.LANG=</varname></term>
        <term><varname>locale.LANGUAGE=</varname></term>
        <term><varname>locale.LC_CTYPE=</varname></term>
        <term><varname>locale.LC_NUMERIC=</varname></term>
        <term><varname>locale.LC_TIME=</varname></term>
        <term><varname>locale.LC_COLLATE=</varname></term>
        <term><varname>locale.LC_MONETARY=</varname></term>
        <term><varname>locale.LC_MESSAGES=</varname></term>
        <term><varname>locale.LC_PAPER=</varname></term>
        <term><varname>locale.LC_NAME=</varname></term>
        <term><varname>locale.LC_ADDRESS=</varname></term>
        <term><varname>locale.LC_TELEPHONE=</varname></term>
        <term><varname>locale.LC_MEASUREMENT=</varname></term>
        <term><varname>locale.LC_IDENTIFICATION=</varname></term>

        <listitem><para>Set the system locale to use. This overrides
        the settings in <filename>/etc/locale.conf</filename>. For
        more information, see
        <citerefentry project='man-pages'><refentrytitle>locale.conf</refentrytitle><manvolnum>5</manvolnum></citerefentry>
        and
        <citerefentry project='man-pages'><refentrytitle>locale</refentrytitle><manvolnum>7</manvolnum></citerefentry>.
        </para></listitem>
      </varlistentry>
    </variablelist>

    <para>For other kernel command line parameters understood by
    components of the core OS, please refer to
    <citerefentry><refentrytitle>kernel-command-line</refentrytitle><manvolnum>7</manvolnum></citerefentry>.</para>
  </refsect1>

  <refsect1>
    <title>Options</title>

    <para><command>systemd</command> is only very rarely invoked directly, since it is started early and is
    already running by the time users may interact with it. Normally, tools like
    <citerefentry><refentrytitle>systemctl</refentrytitle><manvolnum>1</manvolnum></citerefentry> are used to
    give commands to the manager. Since <command>systemd</command> is usually not invoked directly, the
    options listed below are mostly useful for debugging and special purposes.</para>

    <refsect2>
      <title>Introspection and debugging options</title>

      <para>Those options are used for testing and introspection, and <command>systemd</command> may
      be invoked with them at any time:</para>

      <variablelist>
        <varlistentry>
          <term><option>--dump-configuration-items</option></term>

          <listitem><para>Dump understood unit configuration items. This outputs a terse but complete list of
          configuration items understood in unit definition files.</para></listitem>
        </varlistentry>

        <varlistentry>
          <term><option>--dump-bus-properties</option></term>

          <listitem><para>Dump exposed bus properties. This outputs a terse but complete list of properties
          exposed on D-Bus.</para></listitem>
        </varlistentry>

        <varlistentry>
          <term><option>--test</option></term>

          <listitem><para>Determine the initial start-up transaction (i.e. the list of jobs enqueued at
          start-up), dump it and exit — without actually executing any of the determined jobs. This option is
          useful for debugging only. Note that during regular service manager start-up additional units not
          shown by this operation may be started, because hardware, socket, bus or other kinds of activation
          might add additional jobs as the transaction is executed. Use <option>--system</option> to request
          the initial transaction of the system service manager (this is also the implied default), combine
          with <option>--user</option> to request the initial transaction of the per-user service manager
          instead.</para></listitem>
        </varlistentry>

        <varlistentry>
          <term><option>--system</option></term>
          <term><option>--user</option></term>

          <listitem><para>When used in conjunction with <option>--test</option>, selects whether to calculate
          the initial transaction for the system instance or for a per-user instance. These options have no
          effect when invoked without <option>--test</option>, as during regular
          (i.e. non-<option>--test</option>) invocations the service manager will automatically detect
          whether it shall operate in system or per-user mode, by checking whether the PID it is run as is 1
          or not. Note that it is not supported booting and maintaining a system with the service manager
          running in <option>--system</option> mode but with a PID other than 1.</para></listitem>
        </varlistentry>

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

    <refsect2>
      <title>Options that duplicate kernel command line settings</title>

      <para>Those options correspond directly to options listed above in "Kernel Command Line". Both forms
      may be used equivalently for the system manager, but it is recommended to use the forms listed above in
      this context, because they are properly namespaced. When an option is specified both on the kernel
      command line and as a normal command line argument, the latter has higher precedence.</para>

      <para>When <command>systemd</command> is used as a user manager, the kernel command line is ignored and
      only the options described below are understood. Nevertheless, <command>systemd</command> is usually
      started in this mode through the
      <citerefentry><refentrytitle>user@.service</refentrytitle><manvolnum>5</manvolnum></citerefentry>
      service, which is shared between all users. It may be more convenient to use configuration files to
      modify settings (see
      <citerefentry><refentrytitle>systemd-user.conf</refentrytitle><manvolnum>5</manvolnum></citerefentry>),
      or environment variables. See the "Environment" section above for a discussion of how the environment
      block is set.</para>

      <variablelist>
        <varlistentry>
          <term><option>--unit=</option></term>

          <listitem><para>Set default unit to activate on startup. If not specified, defaults to
          <filename>default.target</filename>. See <varname>systemd.unit=</varname> above.</para></listitem>
        </varlistentry>

        <varlistentry>
          <term><option>--dump-core</option></term>

          <listitem><para>Enable core dumping on crash. This switch has no effect when running as user
          instance. Same as <varname>systemd.dump_core=</varname> above.</para></listitem>
        </varlistentry>

        <varlistentry>
          <term><option>--crash-vt=</option><replaceable>VT</replaceable></term>

          <listitem><para>Switch to a specific virtual console (VT) on crash. This switch has no effect when
          running as user instance. Same as <varname>systemd.crash_chvt=</varname> above (but not the
          different spelling!).</para></listitem>
        </varlistentry>

        <varlistentry>
          <term><option>--crash-shell</option></term>

          <listitem><para>Run a shell on crash. This switch has no effect when running as user instance. See
          <varname>systemd.crash_shell=</varname> above.</para></listitem>
        </varlistentry>

        <varlistentry>
          <term><option>--crash-reboot</option></term>

          <listitem><para>Automatically reboot the system on crash. This switch has no effect when running as
          user instance. See <varname>systemd.crash_reboot</varname> above.</para></listitem>
        </varlistentry>

        <varlistentry>
          <term><option>--confirm-spawn</option></term>

          <listitem><para>Ask for confirmation when spawning processes. This switch has no effect when run as
          user instance. See <varname>systemd.confirm_spawn</varname> above.</para></listitem>
        </varlistentry>

        <varlistentry>
          <term><option>--show-status</option></term>

          <listitem><para>Show terse unit status information on the console during boot-up and shutdown. See
          <varname>systemd.show_status</varname> above.</para></listitem>
        </varlistentry>

        <varlistentry>
          <term><option>--log-color</option></term>

          <listitem><para>Highlight important log messages. See <varname>systemd.log_color</varname> above.
          </para></listitem>
        </varlistentry>

        <varlistentry>
          <term><option>--log-level=</option></term>

          <listitem><para>Set log level. See <varname>systemd.log_level</varname> above.</para></listitem>
        </varlistentry>

        <varlistentry>
          <term><option>--log-location</option></term>

          <listitem><para>Include code location in log messages. See <varname>systemd.log_location</varname>
          above.</para></listitem>
        </varlistentry>

        <varlistentry>
          <term><option>--log-target=</option></term>

          <listitem><para>Set log target. See <varname>systemd.log_target</varname> above.</para></listitem>
        </varlistentry>

        <varlistentry>
          <term><option>--log-time=</option></term>

          <listitem><para>Prefix console messages with timestamp. See <varname>systemd.log_time</varname> above.
          </para></listitem>
        </varlistentry>

        <varlistentry>
          <term><option>--machine-id=</option></term>

          <listitem><para>Override the machine-id set on the hard drive. See
          <varname>systemd.machine_id=</varname> above.</para></listitem>
        </varlistentry>

        <varlistentry>
          <term><option>--service-watchdogs</option></term>

          <listitem><para>Globally enable/disable all service watchdog timeouts and emergency actions. See
          <varname>systemd.service_watchdogs</varname> above.</para></listitem>
        </varlistentry>

        <varlistentry>
          <term><option>--default-standard-output=</option></term>
          <term><option>--default-standard-error=</option></term>

          <listitem><para>Sets the default output or error output for all services and sockets,
          respectively. See <varname>systemd.default_standard_output=</varname> and
          <varname>systemd.default_standard_error=</varname> above.</para></listitem>
        </varlistentry>
      </variablelist>
    </refsect2>
  </refsect1>

  <refsect1>
    <title>Sockets and FIFOs</title>

    <variablelist>
      <varlistentry>
        <term><filename>/run/systemd/notify</filename></term>

        <listitem><para>Daemon status notification socket. This is an
        <constant>AF_UNIX</constant> datagram socket and is used to
        implement the daemon notification logic as implemented by
        <citerefentry><refentrytitle>sd_notify</refentrytitle><manvolnum>3</manvolnum></citerefentry>.</para></listitem>

      </varlistentry>

      <varlistentry>
        <term><filename>/run/systemd/private</filename></term>

        <listitem><para>Used internally as communication channel
        between
        <citerefentry><refentrytitle>systemctl</refentrytitle><manvolnum>1</manvolnum></citerefentry>
        and the systemd process. This is an
        <constant>AF_UNIX</constant> stream socket. This interface is
        private to systemd and should not be used in external
        projects.</para></listitem>
      </varlistentry>

      <varlistentry>
        <term><filename>/dev/initctl</filename></term>

        <listitem><para>Limited compatibility support for the SysV
        client interface, as implemented by the
        <filename>systemd-initctl.service</filename> unit. This is a
        named pipe in the file system. This interface is obsolete and
        should not be used in new applications.</para></listitem>
      </varlistentry>
    </variablelist>
  </refsect1>

  <refsect1>
      <title>History</title>

      <variablelist>
        <varlistentry>
          <term>systemd 252</term>
          <listitem><para>Kernel command-line arguments <varname>systemd.unified_cgroup_hierarchy</varname>
          and <varname>systemd.legacy_systemd_cgroup_controller</varname> were deprecated. Please switch to
          the unified cgroup hierarchy.</para></listitem>
        </varlistentry>
      </variablelist>
  </refsect1>

  <refsect1>
    <title>See Also</title>
    <para>
      The <ulink url="https://systemd.io/">systemd Homepage</ulink>,
      <citerefentry><refentrytitle>systemd-system.conf</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
      <citerefentry project='man-pages'><refentrytitle>locale.conf</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
      <citerefentry><refentrytitle>systemctl</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
      <citerefentry><refentrytitle>journalctl</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
      <citerefentry><refentrytitle>systemd-notify</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
      <citerefentry><refentrytitle>daemon</refentrytitle><manvolnum>7</manvolnum></citerefentry>,
      <citerefentry><refentrytitle>sd-daemon</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
      <citerefentry><refentrytitle>org.freedesktop.systemd1</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
      <citerefentry><refentrytitle>systemd.unit</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
      <citerefentry><refentrytitle>systemd.special</refentrytitle><manvolnum>7</manvolnum></citerefentry>,
      <citerefentry project='die-net'><refentrytitle>pkg-config</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
      <citerefentry><refentrytitle>kernel-command-line</refentrytitle><manvolnum>7</manvolnum></citerefentry>,
      <citerefentry project='man-pages'><refentrytitle>bootup</refentrytitle><manvolnum>7</manvolnum></citerefentry>,
      <citerefentry><refentrytitle>systemd.directives</refentrytitle><manvolnum>7</manvolnum></citerefentry>
    </para>
  </refsect1>

</refentry>
