in a both simpler and more flexible system.</para>
<para>Some unit names reflect paths existing in the
- file system name space. Example: a device unit
+ file system namespace. Example: a device unit
<filename>dev-sda.device</filename> refers to a device
- with the device node <filename>/dev/sda</filename> in
+ with the device node <filename noindex='true'>/dev/sda</filename> in
the file system namespace. If this applies a special
way to escape the path name is used, so that the
result is usable as part of a file name. Basically,
</refsect1>
<refsect1>
- <title>Unit load path</title>
+ <title>Unit Load Path</title>
<para>Unit files are loaded from a set of paths
determined during compilation, described in the two
lower in the hierarchy, thus allowing overrides.
</para>
- <para>When systemd is running in session mode
+ <para>When systemd is running in user mode
(<option>--user</option>) and the variable
<varname>$SYSTEMD_UNIT_PATH</varname> is set, this
contents of this variable overrides the unit load
<tbody>
<row>
<entry><filename>/run/systemd/generator.early</filename></entry>
- <entry>Generated units</entry>
- </row>
- <row>
- <entry><filename>&SYSTEM_CONFIG_UNIT_PATH;</filename></entry>
- <entry morerows='1'>Local configuration</entry>
+ <entry>Generated units (early)</entry>
</row>
<row>
<entry><filename>/etc/systemd/system</filename></entry>
+ <entry>Local configuration</entry>
</row>
<row>
<entry><filename>/run/systemd/systemd</filename></entry>
</row>
<row>
<entry><filename>/run/systemd/generator</filename></entry>
- <entry>Generated units</entry>
+ <entry>Generated units (middle)</entry>
</row>
<row>
<entry><filename>/usr/local/lib/systemd/system</filename></entry>
<entry>Units for local packages</entry>
</row>
- <row>
- <entry><filename>&systemunitdir;</filename></entry>
- <entry>Systemd package configuration</entry>
- </row>
<row>
<entry><filename>/usr/lib/systemd/system</filename></entry>
- <entry morerows='1'>Units for installed packages</entry>
- </row>
- <row>
- <entry><filename>/lib/systemd/system</filename></entry>
+ <entry>Units for installed packages</entry>
</row>
<row>
<entry><filename>/run/systemd/generator.late</filename></entry>
- <entry>Generated units</entry>
+ <entry>Generated units (late)</entry>
</row>
</tbody>
</tgroup>
<tbody>
<row>
<entry><filename>/tmp/systemd-generator.early.<replaceable>XXXXXX</replaceable></filename></entry>
- <entry>Generated units</entry>
- </row>
- <row>
- <entry><filename>&USER_CONFIG_UNIT_PATH;</filename></entry>
- <entry morerows='1'>Local configuration</entry>
+ <entry>Generated units (early)</entry>
</row>
<row>
<entry><filename>/etc/systemd/user</filename></entry>
+ <entry>Local configuration</entry>
</row>
<row>
<entry><filename>/run/systemd/user</filename></entry>
</row>
<row>
<entry><filename>/tmp/systemd-generator.<replaceable>XXXXXX</replaceable></filename></entry>
- <entry>Generated units</entry>
+ <entry>Generated units (middle)</entry>
</row>
<row>
<entry><filename>/usr/local/lib/systemd/user</filename></entry>
- <entry morerows='1'>Units for local packages</entry>
- </row>
- <row>
- <entry><filename>/usr/local/share/systemd/user</filename></entry>
- </row>
- <row>
- <entry><filename>&userunitdir;</filename></entry>
- <entry>Systemd package configuration</entry>
+ <entry>Units for local packages</entry>
</row>
<row>
<entry><filename>/usr/lib/systemd/user</filename></entry>
- <entry morerows='1'>Units for installed packages</entry>
- </row>
- <row>
- <entry><filename>/usr/share/systemd/user</filename></entry>
+ <entry>Units for installed packages</entry>
</row>
<row>
<entry><filename>/tmp/systemd-generator.late.<replaceable>XXXXXX</replaceable></filename></entry>
- <entry>Generated units</entry>
+ <entry>Generated units (late)</entry>
</row>
</tbody>
</tgroup>
</table>
- <para>Note: the paths listed above are set at
- compilation time and differ between distributions. The
- "authoritative" list is printed by
- <command>systemd</command> at during start and daemon
- reconfiguration.</para>
-
<para>Additional units might be loaded into systemd
("linked") from directories not on the unit load
path. See the <command>link</command> command for
<listitem><para>Lists one or more
units that are activated when this
unit enters the
- '<literal>failed</literal>'
+ <literal>failed</literal>
state.</para></listitem>
</varlistentry>
time. If this time limit is reached
the job will be cancelled, the unit
however will not change state or even
- enter the '<literal>failed</literal>'
+ enter the <literal>failed</literal>
mode. This value defaults to 0 (job
timeouts disabled), except for device
units. NB: this timeout is independent
to
<varname>ConditionPathExists=</varname>
is prefixed with an exclamation mark
- ('!'), the test is negated, and the unit
+ (<literal>!</literal>), the test is negated, and the unit
is only started if the path does not
exist.</para>
exclamation mark unset). The argument
must either be a single word, or an
assignment (i.e. two words, separated
- '='). In the former
+ <literal>=</literal>). In the former
case the kernel command line is
searched for the word appearing as is,
or as left hand side of an
<para><varname>ConditionSecurity=</varname>
may be used to check whether the given
security module is enabled on the
- system. Currently the only recognized
- value is <varname>selinux</varname>.
+ system. Currently the recognized values
+ values are <varname>selinux</varname>,
+ <varname>apparmor</varname>,
+ <varname>ima</varname> and
+ <varname>smack</varname>.
The test may be negated by prepending
an exclamation
mark.</para>
<term><varname>Also=</varname></term>
<listitem><para>Additional units to
- install when this unit is
- installed. If the user requests
- installation of a unit with this
- option configured,
+ install/deinstall when this unit is
+ installed/deinstalled. If the user
+ requests installation/deinstallation
+ of a unit with this option configured,
<command>systemctl enable</command>
- will automatically install units
- listed in this option as
+ and <command>systemctl
+ disable</command> will automatically
+ install/uninstall units listed in this option as
well.</para></listitem>
</varlistentry>
</variablelist>
<row>
<entry><literal>%f</literal></entry>
<entry>Unescaped file name</entry>
- <entry>This is either the unescaped instance name (if applicable) with / prepended (if applicable), or the prefix name similarly prepended with /.</entry>
+ <entry>This is either the unescaped instance name (if applicable) with <filename>/</filename> prepended (if applicable), or the prefix name similarly prepended with <filename>/</filename>.</entry>
</row>
<row>
<entry><literal>%c</literal></entry>
</row>
<row>
<entry><literal>%r</literal></entry>
- <entry>Root control group path of systemd</entry>
- <entry></entry>
+ <entry>Root control group path where units are placed.</entry>
+ <entry>For system instances this usually resolves to <filename>/system</filename>, except in containers, where the path might be prefixed with the container's root control group.</entry>
</row>
<row>
<entry><literal>%R</literal></entry>
- <entry>Parent directory of the root control group path of systemd</entry>
- <entry></entry>
+ <entry>Parent directory of the control group path where units are placed.</entry>
+ <entry>For system instances this usually resolves to <filename>/</filename>, except in containers, where this resolves to the container's root directory. This specifier is particularly useful in the <varname>ControlGroup=</varname> setting (see <citerefentry><refentrytitle>systemd.exec</refentrytitle><manvolnum>5</manvolnum></citerefentry>).</entry>
</row>
<row>
<entry><literal>%t</literal></entry>
<row>
<entry><literal>%s</literal></entry>
<entry>User shell</entry>
- <entry>This is the shell of the configured
- user of the unit, or (if none is set) the user
- running the systemd instance. If the user is
- <literal>root</literal> (UID equal to 0), the
- shell configured in account database is
- ignored and <filename>/bin/sh</filename> is
- always used.
- </entry>
+ <entry>This is the shell of the configured user of the unit, or (if none is set) the user running the systemd instance. If the user is <literal>root</literal> (UID equal to 0), the shell configured in account database is ignored and <filename>/bin/sh</filename> is always used.</entry>
</row>
<row>
<entry><literal>%m</literal></entry>