</refnamediv>
<refsynopsisdiv>
- <para><filename>systemd.service</filename></para>
+ <para><filename><replaceable>service</replaceable>.service</filename></para>
</refsynopsisdiv>
<refsect1>
options specific to the <literal>[Service]</literal>
section of service units are the following:</para>
- <variablelist>
+ <variablelist class='unit-directives'>
<varlistentry>
<term><varname>Type=</varname></term>
<varlistentry>
<term><varname>ExecStart=</varname></term>
- <listitem><para>Takes a command line
- that is executed when this service
- shall be started up. The first token
- of the command line must be an
- absolute file name, then followed by
- arguments for the process. It is
- mandatory to set this option for all
- services. This option may not be
- specified more than once, except when
- <varname>Type=oneshot</varname> is
- used in which case more than one
- <varname>ExecStart=</varname> line is
- accepted which are then invoked one by
- one, sequentially in the order they
- appear in the unit file.</para>
+ <listitem><para>Commands with their
+ arguments that are executed when this
+ service is started. The first
+ argument must be an absolute path
+ name.</para>
- <para>Optionally, if the absolute file
- name is prefixed with
- <literal>@</literal>, the second token
- will be passed as
- <literal>argv[0]</literal> to the
- executed process, followed by the
- further arguments specified. If the
- first token is prefixed with
- <literal>-</literal> an exit code of
- the command normally considered a
- failure (i.e. non-zero exit status or
- abnormal exit due to signal) is ignored
- and considered success. If both
- <literal>-</literal> and
- <literal>@</literal> are used for the
- same command the former must precede
- the latter. Unless
+ <para>When
+ <varname>Type=oneshot</varname> is
+ used, more than one command may be
+ specified. Multiple command lines may
+ be concatenated in a single directive,
+ by separating them with semicolons
+ (these semicolons must be passed as
+ separate words). Alternatively, this
+ directive may be specified more than
+ once with the same effect. However,
+ the latter syntax is not recommended
+ for compatibility with parsers
+ suitable for XDG
+ <filename>.desktop</filename> files.
+ The commands are invoked one by one
+ sequentially in the order they appear
+ in the unit file. When
+ <varname>Type</varname> is not
+ <option>oneshot</option>, only one
+ command may be given. Lone semicolons
+ may be escaped as
+ '<literal>\;</literal>'. If the empty
+ string is assigned to this option the
+ list of commands to start is reset,
+ prior assignments of this option will
+ have no effect.</para>
+
+ <para>Unless
<varname>Type=forking</varname> is
set, the process started via this
command line will be considered the
- main process of the daemon. The
- command line accepts % specifiers as
+ main process of the daemon.</para>
+
+ <para>The command line accepts
+ '<literal>%</literal>' specifiers as
described in
- <citerefentry><refentrytitle>systemd.unit</refentrytitle><manvolnum>5</manvolnum></citerefentry>.</para>
+ <citerefentry><refentrytitle>systemd.unit</refentrytitle><manvolnum>5</manvolnum></citerefentry>. Note
+ that the first argument of the command
+ line (i.e. the program to execute) may
+ not include specifiers.</para>
<para>On top of that basic environment
variable substitution is
at whitespace, resulting in no or more
arguments. Note that the first
argument (i.e. the program to execute)
- may not be a variable, and must be a
- literal and absolute path
+ may not be a variable, since it must
+ be a literal and absolute path
name.</para>
+ <para>Optionally, if the absolute file
+ name is prefixed with
+ '<literal>@</literal>', the second token
+ will be passed as
+ <literal>argv[0]</literal> to the
+ executed process, followed by the
+ further arguments specified. If the
+ absolute file name is prefixed with
+ '<literal>-</literal>' an exit code of
+ the command normally considered a
+ failure (i.e. non-zero exit status or
+ abnormal exit due to signal) is ignored
+ and considered success. If both
+ '<literal>-</literal>' and
+ '<literal>@</literal>' are used they
+ can appear in either order.</para>
+
<para>Note that this setting does not
directly support shell command
lines. If shell command lines are to
<listitem><para>Additional commands
that are executed before or after
the command in
- <varname>ExecStart=</varname>, respectively. Multiple
- command lines may be concatenated in a
- single directive, by separating them
- by semicolons (these semicolons must
- be passed as separate words). In that
- case, the commands are executed one
- after the other,
- serially. Alternatively, these
- directives may be specified more than
- once with the same effect. However,
- the latter syntax is not recommended
- for compatibility with parsers
- suitable for XDG
- <filename>.desktop</filename> files.
- Use of these settings is
- optional. Specifier and environment
- variable substitution is
- supported.</para></listitem>
+ <varname>ExecStart=</varname>, respectively.
+ Syntax is the same as for
+ <varname>ExecStart=</varname>, except
+ that multiple command lines are allowed
+ and the commands are executed one
+ after the other, serially.</para>
+ </listitem>
</varlistentry>
<varlistentry>
trigger a configuration reload in the
service. This argument takes multiple
command lines, following the same
- scheme as pointed out for
- <varname>ExecStartPre=</varname>
+ scheme as described for
+ <varname>ExecStart=</varname>
above. Use of this setting is
optional. Specifier and environment
variable substitution is supported
stop the service started via
<varname>ExecStart=</varname>. This
argument takes multiple command lines,
- following the same scheme as pointed
- out for
- <varname>ExecStartPre=</varname>
+ following the same scheme as described
+ for <varname>ExecStart=</varname>
above. Use of this setting is
optional. All processes remaining for
a service after the commands
configured in
<varname>ExecStop=</varname>. This
argument takes multiple command lines,
- following the same scheme as pointed
- out for
- <varname>ExecStartPre</varname>. Use
+ following the same scheme as described
+ for <varname>ExecStart</varname>. Use
of these settings is
optional. Specifier and environment
variable substitution is
SIGKILL</literal>", ensures that exit
codes 1, 2, 8 and the termination
signal SIGKILL are considered clean
- service
- terminations.</para></listitem>
+ service terminations. This option may
+ appear more than once in which case
+ the list of successful exit statuses
+ is merged. If the empty string is
+ assigned to this option the list is
+ reset, all prior assignments of this
+ option will have no
+ effect.</para></listitem>
</varlistentry>
<varlistentry>
logic. Example:
"<literal>RestartPreventExitStatus=1 6
SIGABRT</literal>", ensures that exit
- codes 1 and 6 and the termination signal
- SIGABRT will not result in automatic
- service restarting.</para></listitem>
+ codes 1 and 6 and the termination
+ signal SIGABRT will not result in
+ automatic service restarting. This
+ option may appear more than once in
+ which case the list of restart preventing
+ statuses is merged. If the empty
+ string is assigned to this option the
+ list is reset, all prior assignments
+ of this option will have no
+ effect.</para></listitem>
</varlistentry>
<varlistentry>
open access to the notification socket
when using
<varname>Type=notify</varname> or
- <varname>WatchdogUsec=</varname> (see
+ <varname>WatchdogSec=</varname> (see
above). If those options are used but
<varname>NotifyAccess=</varname> not
configured it will be implicitly set
same time. Also note that a different
service may be activated on incoming
traffic than inherits the sockets. Or
- in other words: The
+ in other words: the
<varname>Service=</varname> setting of
<filename>.socket</filename> units
- doesn't have to match the inverse of the
- <varname>Sockets=</varname> setting of
- the <filename>.service</filename> it
- refers to.</para></listitem>
+ doesn't have to match the inverse of
+ the <varname>Sockets=</varname>
+ setting of the
+ <filename>.service</filename> it
+ refers to.</para>
+
+ <para>This option may appear more than
+ once, in which case the list of socket
+ units is merged. If the empty string
+ is assigned to this option the list of
+ sockets is reset, all prior uses of
+ this setting will have no
+ effect.</para></listitem>
</varlistentry>
<varlistentry>
for compatibility reasons and should not be used in
newly written service files.</para>
- <variablelist>
+ <variablelist class='unit-directives'>
<varlistentry>
<term><varname>SysVStartPriority=</varname></term>
<listitem><para>Set the SysV start
<citerefentry><refentrytitle>systemctl</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
<citerefentry><refentrytitle>systemd.unit</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
<citerefentry><refentrytitle>systemd.exec</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
- <citerefentry><refentrytitle>systemd.kill</refentrytitle><manvolnum>5</manvolnum></citerefentry>
+ <citerefentry><refentrytitle>systemd.kill</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
+ <citerefentry><refentrytitle>systemd.directives</refentrytitle><manvolnum>7</manvolnum></citerefentry>
</para>
</refsect1>