<?xml version='1.0'?> <!--*-nxml-*-->
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
- "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
+ "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd" [
+<!ENTITY % entities SYSTEM "custom-entities.ent" >
+%entities;
+]>
<!--
This file is part of systemd.
</refnamediv>
<refsynopsisdiv>
- <para><filename>systemd.service</filename>,
- <filename>systemd.socket</filename>,
- <filename>systemd.device</filename>,
- <filename>systemd.mount</filename>,
- <filename>systemd.automount</filename>,
- <filename>systemd.swap</filename>,
- <filename>systemd.target</filename>,
- <filename>systemd.path</filename>,
- <filename>systemd.timer</filename>,
- <filename>systemd.snapshot</filename></para>
+ <para><filename><replaceable>service</replaceable>.service</filename>,
+ <filename><replaceable>socket</replaceable>.socket</filename>,
+ <filename><replaceable>device</replaceable>.device</filename>,
+ <filename><replaceable>mount</replaceable>.mount</filename>,
+ <filename><replaceable>automount</replaceable>.automount</filename>,
+ <filename><replaceable>swap</replaceable>.swap</filename>,
+ <filename><replaceable>target</replaceable>.target</filename>,
+ <filename><replaceable>path</replaceable>.path</filename>,
+ <filename><replaceable>timer</replaceable>.timer</filename>,
+ <filename><replaceable>snapshot</replaceable>.snapshot</filename></para>
+
+ <para><literallayout><filename>/etc/systemd/system/*</filename>
+<filename>/run/systemd/system/*</filename>
+<filename>/usr/lib/systemd/system/*</filename>
+<filename>...</filename>
+ </literallayout></para>
+
+ <para><literallayout><filename>/etc/systemd/user/*</filename>
+<filename>/run/systemd/user/*</filename>
+<filename>/usr/lib/systemd/user/*</filename>
+<filename>...</filename>
+ </literallayout></para>
</refsynopsisdiv>
<refsect1>
<para>A unit configuration file encodes information
about a service, a socket, a device, a mount point, an
automount point, a swap file or partition, a start-up
- target, a file system path or a timer controlled and
+ target, a file system path, or a timer controlled and
supervised by
<citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>. The
syntax is inspired by <ulink
sections described here, each unit may have a
type-specific section, e.g. [Service] for a service
unit. See the respective man pages for more
- information.</para>
+ information:
+ <citerefentry><refentrytitle>systemd.service</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
+ <citerefentry><refentrytitle>systemd.socket</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
+ <citerefentry><refentrytitle>systemd.device</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
+ <citerefentry><refentrytitle>systemd.mount</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
+ <citerefentry><refentrytitle>systemd.automount</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
+ <citerefentry><refentrytitle>systemd.swap</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
+ <citerefentry><refentrytitle>systemd.target</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
+ <citerefentry><refentrytitle>systemd.path</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
+ <citerefentry><refentrytitle>systemd.timer</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
+ <citerefentry><refentrytitle>systemd.snapshot</refentrytitle><manvolnum>5</manvolnum></citerefentry>.
+ </para>
+
+ <para>Unit files are loaded from a set of paths
+ determined during compilation, described in the next section.
+ </para>
<para>Unit files may contain additional options on top
of those listed here. If systemd encounters an unknown
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>
+
+ <para>Unit files are loaded from a set of paths
+ determined during compilation, described in the two
+ tables below. Unit files found in directories higher
+ in the hierarchy override files with the same name
+ lower in the hierarchy, thus allowing overrides.
+ </para>
+
+ <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
+ path.
+ </para>
+
+ <table>
+ <title>
+ Load path when running in system mode (<option>--system</option>).
+ </title>
+
+ <tgroup cols='2'>
+ <colspec colname='path' />
+ <colspec colname='expl' />
+ <thead>
+ <row>
+ <entry>Path</entry>
+ <entry>Description</entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry><filename>/run/systemd/generator.early</filename></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>
+ <entry>Volatile units</entry>
+ </row>
+ <row>
+ <entry><filename>/run/systemd/generator</filename></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>/usr/lib/systemd/system</filename></entry>
+ <entry>Units for installed packages</entry>
+ </row>
+ <row>
+ <entry><filename>/run/systemd/generator.late</filename></entry>
+ <entry>Generated units (late)</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+
+ <table>
+ <title>
+ Load path when running in session mode (<option>--user</option>).
+ </title>
+
+ <tgroup cols='2'>
+ <colspec colname='path' />
+ <colspec colname='expl' />
+ <thead>
+ <row>
+ <entry>Path</entry>
+ <entry>Description</entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry><filename>/tmp/systemd-generator.early.<replaceable>XXXXXX</replaceable></filename></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>
+ <entry>Volatile units</entry>
+ </row>
+ <row>
+ <entry><filename>/tmp/systemd-generator.<replaceable>XXXXXX</replaceable></filename></entry>
+ <entry>Generated units (middle)</entry>
+ </row>
+ <row>
+ <entry><filename>/usr/local/lib/systemd/user</filename></entry>
+ <entry>Units for local packages</entry>
+ </row>
+ <row>
+ <entry><filename>/usr/lib/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 (late)</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+
+ <para>Additional units might be loaded into systemd
+ ("linked") from directories not on the unit load
+ path. See the <command>link</command> command for
+ <citerefentry><refentrytitle>systemctl</refentrytitle><manvolnum>1</manvolnum></citerefentry>.
+ </para>
+ </refsect1>
+
<refsect1>
<title>Options</title>
<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>
+ <para>The following specifiers are interpreted in the
+ Install section: %n, %N, %p, %i, %U, %u, %m, %H, %b.
+ For their meaning see the next section.
+ </para>
</refsect1>
<refsect1>
<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.</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>
<entry>Host name</entry>
<entry>The host name of the running system.</entry>
</row>
+ <row>
+ <entry><literal>%%</literal></entry>
+ <entry>Escaped %</entry>
+ <entry>Single percent sign.</entry>
+ </row>
</tbody>
</tgroup>
</table>