as. This option is mandatory for
services where
<varname>Type=</varname> is set to
- <option>dbus</option>, but its use
- is otherwise recommended if the process
- takes a name on the D-Bus bus.</para>
+ <option>dbus</option>.</para>
</listitem>
</varlistentry>
used, zero or more commands may be
specified. This can be specified by
providing multiple command lines in
- the same directive , or alternatively,
+ the same directive, or alternatively,
this directive may be specified more
than once with the same effect. If the
empty string is assigned to this
when <varname>Type=oneshot</varname> is
used, in which case the timeout
is disabled by default
- (see <citerefentry><refentrytitle>systemd-systemd.conf</refentrytitle><manvolnum>5</manvolnum></citerefentry>).
+ (see <citerefentry><refentrytitle>systemd-system.conf</refentrytitle><manvolnum>5</manvolnum></citerefentry>).
</para></listitem>
</varlistentry>
the timeout logic. Defaults to
<varname>DefaultTimeoutStopSec=</varname> from the
manager configuration file
- (see <citerefentry><refentrytitle>systemd-systemd.conf</refentrytitle><manvolnum>5</manvolnum></citerefentry>).
+ (see <citerefentry><refentrytitle>systemd-system.conf</refentrytitle><manvolnum>5</manvolnum></citerefentry>).
</para></listitem>
</varlistentry>
(i.e. the "keep-alive ping"). If the time
between two such calls is larger than
the configured time, then the service
- is placed in a failed state. By
- setting <varname>Restart=</varname> to
+ is placed in a failed state and it will
+ be terminated with <varname>SIGABRT</varname>.
+ By setting <varname>Restart=</varname> to
<option>on-failure</option> or
<option>always</option>, the service
will be automatically restarted. The
<term><varname>Sockets=</varname></term>
<listitem><para>Specifies the name of
the socket units this service shall
- inherit the sockets from when the
- service is started. Normally it
- should not be necessary to use this
- setting as all sockets whose unit
+ inherit socket file descriptors
+ from when the service is
+ started. Normally it should not be
+ necessary to use this setting as all
+ socket file descriptors whose unit
shares the same name as the service
- (ignoring the different suffix of course)
- are passed to the spawned
- process.</para>
-
- <para>Note that the same socket may be
- passed to multiple processes at the
- same time. Also note that a different
- service may be activated on incoming
- traffic than that which inherits the
- sockets. Or in other words: the
+ (subject to the different unit name
+ suffix of course) are passed to the
+ spawned process.</para>
+
+ <para>Note that the same socket file
+ descriptors may be passed to multiple
+ processes simultaneously. Also note
+ that a different service may be
+ activated on incoming socket traffic
+ than the one which is ultimately
+ configured to inherit the socket file
+ descriptors. Or in other words: the
<varname>Service=</varname> setting of
<filename>.socket</filename> units
does not have to match the inverse of
</refsect1>
- <refsect1>
- <title>Compatibility Options</title>
-
- <para>The following options are also available in the
- <literal>[Service]</literal> section, but exist purely
- for compatibility reasons and should not be used in
- newly written service files.</para>
-
- <variablelist class='unit-directives'>
- <varlistentry>
- <term><varname>SysVStartPriority=</varname></term>
- <listitem><para>Set the SysV start
- priority to use to order this service
- in relation to SysV services lacking
- LSB headers. This option is only
- necessary to fix ordering in relation
- to legacy SysV services that have no
- ordering information encoded in the
- script headers. As such, it should only
- be used as a temporary compatibility
- option and should not be used in new unit
- files. Almost always, it is a better
- choice to add explicit ordering
- directives via
- <varname>After=</varname> or
- <varname>Before=</varname>,
- instead. For more details, see
- <citerefentry><refentrytitle>systemd.unit</refentrytitle><manvolnum>5</manvolnum></citerefentry>.
- If used, pass an integer value in the
- range 0-99.</para></listitem>
- </varlistentry>
- </variablelist>
- </refsect1>
-
<refsect1>
<title>Command lines</title>
contains, resulting in a single argument. Use
<literal>$FOO</literal> as a separate word on the
command line, in which case it will be replaced by the
- value of the environment variable split at whitespace,
- resulting in zero or more arguments. To pass a literal
- dollar sign, use <literal>$$</literal>. Variables
- whose value is not known at expansion time are treated
- as empty strings. Note that the first argument
- (i.e. the program to execute) may not be a
- variable.</para>
+ value of the environment variable split at whitespace
+ resulting in zero or more arguments. For this type of
+ expansion, quotes and respected when splitting into
+ words, and afterwards removed.</para>
+
+ <para>Example:</para>
+
+ <programlisting>Environment="ONE=one" 'TWO=two two'
+ExecStart=/bin/echo $ONE $TWO ${TWO}</programlisting>
+
+ <para>This will execute <command>/bin/echo</command>
+ with four arguments: <literal>one</literal>,
+ <literal>two</literal>, <literal>two</literal>, and
+ <literal>two two</literal>.</para>
+
+ <para>Example:</para>
+ <programlisting>Environment=ONE='one' "TWO='two two' too" THREE=
+ExecStart=/bin/echo ${ONE} ${TWO} ${THREE}
+ExecStart=/bin/echo $ONE $TWO $THREE</programlisting>
+ <para>This results in <filename>echo</filename> being
+ called twice, the first time with arguments
+ <literal>'one'</literal>,
+ <literal>'two two' too</literal>, <literal></literal>,
+ and the second time with arguments
+ <literal>one</literal>, <literal>two two</literal>,
+ <literal>too</literal>.
+ </para>
+
+ <para>To pass a literal dollar sign, use
+ <literal>$$</literal>. Variables whose value is not
+ known at expansion time are treated as empty
+ strings. Note that the first argument (i.e. the
+ program to execute) may not be a variable.</para>
<para>Variables to be used in this fashion may be
defined through <varname>Environment=</varname> and
<literal>>/dev/null</literal>,
<literal>&</literal>, <literal>;</literal>, and
<literal>/bin/ls</literal>.</para>
-
- <para>Example:</para>
-
- <programlisting>Environment="ONE=one" 'TWO=two two'
-ExecStart=/bin/echo $ONE $TWO ${TWO}</programlisting>
-
- <para>This will execute <command>/bin/echo</command>
- with four arguments: <literal>one</literal>,
- <literal>two</literal>, <literal>two</literal>, and
- <literal>two two</literal>.</para>
</refsect1>
<refsect1>