chiark / gitweb /
nspawn: add --version
[elogind.git] / man / systemd.service.xml
index 339dea9aa503d8ab3787a3ea68edb8f38b7f4dc5..598e863651d65216690de4329049cab6718d8337 100644 (file)
                 script. This is useful for compatibility with
                 SysV. Note that this compatibility is quite
                 comprehensive but not 100%. For details about the
-                incomptibilities see the <ulink
+                incompatibilities see the <ulink
                 url="http://www.freedesktop.org/wiki/Software/systemd/Incompatibilities">Incompatibilities
                 with SysV</ulink> document.
                 </para>
                                 <para>Behavior of
                                 <option>idle</option> is very similar
                                 to <option>simple</option>, however
-                                actual execution of the service
+                                actual execution of the service
                                 binary is delayed until all jobs are
                                 dispatched. This may be used to avoid
                                 interleaving of output of shell
                                 <listitem><para>Takes a boolean value
                                 that specifies whether systemd should
                                 try to guess the main PID of a service
-                                should if it cannot be determined
+                                if it cannot be determined
                                 reliably. This option is ignored
                                 unless <option>Type=forking</option>
                                 is set and <option>PIDFile=</option>
                                 <term><varname>BusName=</varname></term>
 
                                 <listitem><para>Takes a D-Bus bus
-                                name, where this service is reachable
+                                name, that this service is reachable
                                 as. This option is mandatory for
                                 services where
                                 <varname>Type=</varname> is set to
 
                         <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
+                                <listitem><para>Commands with their
+                                arguments that are executed when this
+                                service is started.
+                                </para>
+
+                                <para>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>
+                                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>'.</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.</para>
+
+                                <para>The command line accepts
+                                '<literal>%</literal>' specifiers as
+                                described in
+                                <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>Optionally, if the absolute file
                                 name is prefixed with
-                                <literal>@</literal>, the second token
+                                '<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
+                                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 for the
-                                same command the former must precede
-                                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>.</para>
+                                '<literal>-</literal>' and
+                                '<literal>@</literal>' are used they
+                                can appear in either order.</para>
 
                                 <para>On top of that basic environment
                                 variable substitution is
                                 supported. Use
                                 <literal>${FOO}</literal> as part of a
-                                word, or as word of its own on the
+                                word, or as word of its own on the
                                 command line, in which case it will be
                                 replaced by the value of the
                                 environment variable including all
                                 explicitly to a shell implementation
                                 of some kind. Example:
                                 <literal>ExecStart=/bin/sh -c 'dmesg | tac'</literal></para>
+
+                                <para>For services run by a user
+                                instance of systemd the special
+                                environment variable
+                                <literal>MANAGERPID</literal> is set
+                                to the PID of the systemd
+                                instance.</para>
                                 </listitem>
                         </varlistentry>
 
                                 <term><varname>ExecStartPre=</varname></term>
                                 <term><varname>ExecStartPost=</varname></term>
                                 <listitem><para>Additional commands
-                                that are executed before (resp. after)
+                                that are executed before or after
                                 the command in
-                                <varname>ExecStart=</varname>. 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
                                 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
+                                additional special environment
+                                variables 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>
 
                                 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
                                 0. If set to
                                 <option>on-failure</option> it will be
                                 restarted only when it exited with an
-                                exit code not equalling 0, when
+                                exit code not equaling 0, when
                                 terminated by a signal (including on
                                 core dump), when an operation (such as
                                 service reload) times out or when the