token will be passed as
<literal>argv[0]</literal> to the
executed process, followed by the
- further arguments specified. Unless
- <varname>Type=forking</varname> is set,
- the process started via this command
- line will be considered the main
- process of the
- daemon.</para></listitem>
+ further arguments specified. If the
+ first token is prefixed with
+ <literal>-</literal> an error code of
+ the command normally considered a
+ failure is ignored and considered
+ success. If both <literal>-</literal>
+ and <literal>@</literal> are used for
+ the same command the latter must
+ preceed the latter. 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
+ described in
+ <citerefentry><refentrytitle>systemd.unit</refentrytitle><manvolnum>5</manvolnum></citerefentry>. On
+ top of that basic environment variable
+ substitution is supported, where
+ <literal>${FOO}</literal> is replaced
+ by the string value of the environment
+ variable of the same name. Also
+ <literal>$FOO</literal> may appear as
+ seperate word on the command line in
+ which case the variable is replaced by
+ its value split at
+ whitespaces.</para></listitem>
</varlistentry>
<varlistentry>
<listitem><para>Additional commands
that are executed before (resp. after)
the command in
- <varname>ExecStart=</varname>. If
- specified more than once, all commands
- are executed one after the other,
- serially. Use of these settings is
- optional.</para></listitem>
+ <varname>ExecStart=</varname>. Multiple
+ command lines may be concatenated in a
+ single directive, by seperating them
+ by semicolons (these semicolons must
+ be passed as seperate words). In that
+ case, the commands are executed one
+ after the other,
+ serially. Alternatively, these
+ directives may be specified more than
+ once whith 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>
</varlistentry>
<varlistentry>
<term><varname>ExecReload=</varname></term>
<listitem><para>Commands to execute to
trigger a configuration reload in the
- service. If used more than once, all
- commands are executed one after the
- other, serially. Use of this setting is optional.
- </para></listitem>
+ service. This argument takes multiple
+ command lines, following the same
+ scheme as pointed out for
+ <varname>ExecStartPre=</varname>
+ above. Use of this setting is
+ optional. Specifier and environment
+ variable substitution is supported
+ here following the same scheme as for
+ <varname>ExecStart=</varname>. One
+ special environment variable is set:
+ if known <literal>$MAINPID</literal> is
+ set to the main process of the
+ daemon, and may be used for command
+ lines like the following:
+ <command>/bin/kill -HUP
+ $(MAINPID)</command>.</para></listitem>
</varlistentry>
<varlistentry>
<term><varname>ExecStop=</varname></term>
<listitem><para>Commands to execute to
stop the service started via
- <varname>ExecStart=</varname>. If used
- more than once, all commands are
- executed one after the other,
- serially. Use of this setting is
+ <varname>ExecStart=</varname>. This
+ argument takes multiple command lines,
+ following the same scheme as pointed
+ out for
+ <varname>ExecStartPre=</varname>
+ above. Use of this setting is
optional. All processes remaining for
a service after the commands
configured in this option are run are
(see below). If this option is not
specified the process is terminated
right-away when service stop is
- requested.</para></listitem>
+ requested. Specifier and environment
+ variable substitution is supported
+ (including
+ <literal>$(MAINPID)</literal>, see
+ above).</para></listitem>
</varlistentry>
<varlistentry>
that are executed after the service
was stopped using the commands
configured in
- <varname>ExecStop=</varname>. If
- specified more than once, all commands
- are executed one after the other,
- serially. Use of these settings is
- optional.</para></listitem>
+ <varname>ExecStop=</varname>. This
+ argument takes multiple command lines,
+ following the same scheme as pointed
+ out for
+ <varname>ExecStartPre</varname>. Use
+ of these settings is
+ optional. Specifier and environment
+ variable substitution is
+ supported.</para></listitem>
</varlistentry>
<varlistentry>