systemd.service.xml revision a354329f724d6ce913d2ccffb2be8f3327a67faa
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann<?xml version='1.0'?> <!--*-nxml-*-->
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann<?xml-stylesheet type="text/xsl" href="http://docbook.sourceforge.net/release/xsl/current/xhtml/docbook.xsl"?>
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann<!--
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann This file is part of systemd.
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann Copyright 2010 Lennart Poettering
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann systemd is free software; you can redistribute it and/or modify it
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann under the terms of the GNU Lesser General Public License as published by
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann the Free Software Foundation; either version 2.1 of the License, or
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann (at your option) any later version.
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann systemd is distributed in the hope that it will be useful, but
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann WITHOUT ANY WARRANTY; without even the implied warranty of
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann Lesser General Public License for more details.
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann You should have received a copy of the GNU Lesser General Public License
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann along with systemd; If not, see <http://www.gnu.org/licenses/>.
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann-->
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann<refentry id="systemd.service">
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann <refentryinfo>
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann <title>systemd.service</title>
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann <productname>systemd</productname>
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann <authorgroup>
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann <author>
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann <contrib>Developer</contrib>
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann <firstname>Lennart</firstname>
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann <surname>Poettering</surname>
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann <email>lennart@poettering.net</email>
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann </author>
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann </authorgroup>
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann </refentryinfo>
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann <refmeta>
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann <refentrytitle>systemd.service</refentrytitle>
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann <manvolnum>5</manvolnum>
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann </refmeta>
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann <refnamediv>
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann <refname>systemd.service</refname>
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann <refpurpose>Service unit configuration</refpurpose>
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann </refnamediv>
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann <refsynopsisdiv>
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann <para><filename><replaceable>service</replaceable>.service</filename></para>
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann </refsynopsisdiv>
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann <refsect1>
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann <title>Description</title>
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann <para>A unit configuration file whose name ends in
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann <filename>.service</filename> encodes information
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann about a process controlled and supervised by
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann systemd.</para>
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann <para>This man page lists the configuration options
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann specific to this unit type. See
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann <citerefentry><refentrytitle>systemd.unit</refentrytitle><manvolnum>5</manvolnum></citerefentry>
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann for the common options of all unit configuration
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann files. The common configuration items are configured
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann in the generic <literal>[Unit]</literal> and
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann <literal>[Install]</literal> sections. The service
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann specific configuration options are configured in the
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann <literal>[Service]</literal> section.</para>
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann <para>Additional options are listed in
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann <citerefentry><refentrytitle>systemd.exec</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann which define the execution environment the commands
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann are executed in, and in
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann <citerefentry><refentrytitle>systemd.kill</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann which define the way the processes of the service are
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann terminated, and in
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann <citerefentry><refentrytitle>systemd.resource-control</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann which configure resource control settings for the
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann processes of the service.</para>
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann <para>Unless <varname>DefaultDependencies=</varname>
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann is set to <option>false</option>, service units will
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann implicitly have dependencies of type
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann <varname>Requires=</varname> and
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann <varname>After=</varname> on
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann <filename>basic.target</filename> as well as
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann dependencies of type <varname>Conflicts=</varname> and
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann <varname>Before=</varname> on
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann <filename>shutdown.target</filename>. These ensure
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann that normal service units pull in basic system
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann initialization, and are terminated cleanly prior to
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann system shutdown. Only services involved with early
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann boot or late system shutdown should disable this
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann option.</para>
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann <para>If a service is requested under a certain name
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann but no unit configuration file is found, systemd looks
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann for a SysV init script by the same name (with the
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann <filename>.service</filename> suffix removed) and
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann dynamically creates a service unit from that
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann script. This is useful for compatibility with
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann SysV. Note that this compatibility is quite
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann comprehensive but not 100%. For details about the
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann incompatibilities, see the <ulink
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann url="http://www.freedesktop.org/wiki/Software/systemd/Incompatibilities">Incompatibilities
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann with SysV</ulink> document.
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann </para>
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann </refsect1>
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann <refsect1>
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann <title>Options</title>
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann <para>Service files must include a
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann <literal>[Service]</literal> section, which carries
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann information about the service and the process it
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann supervises. A number of options that may be used in
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann this section are shared with other unit types. These
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann options are documented in
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann <citerefentry><refentrytitle>systemd.exec</refentrytitle><manvolnum>5</manvolnum></citerefentry>
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann and
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann <citerefentry><refentrytitle>systemd.kill</refentrytitle><manvolnum>5</manvolnum></citerefentry>. The
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann options specific to the <literal>[Service]</literal>
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann section of service units are the following:</para>
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann <variablelist class='unit-directives'>
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann <varlistentry>
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann <term><varname>Type=</varname></term>
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann <listitem><para>Configures the process
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann start-up type for this service
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann unit. One of <option>simple</option>,
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann <option>forking</option>,
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann <option>oneshot</option>,
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann <option>dbus</option>,
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann <option>notify</option> or
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann <option>idle</option>.</para>
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann <para>If set to
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann <option>simple</option> (the default
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann if neither
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann <varname>Type=</varname> nor
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann <varname>BusName=</varname>, but
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann <varname>ExecStart=</varname> are
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann specified), it is expected that the
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann process configured with
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann <varname>ExecStart=</varname> is the
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann main process of the service. In this
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann mode, if the process offers
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann functionality to other processes on
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann the system, its communication channels
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann should be installed before the daemon
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann is started up (e.g. sockets set up by
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann systemd, via socket activation), as
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann systemd will immediately proceed
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann starting follow-up units.</para>
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann <para>If set to
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann <option>forking</option>, it is
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann expected that the process configured
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann with <varname>ExecStart=</varname>
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann will call <function>fork()</function>
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann as part of its start-up. The parent process is
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann expected to exit when start-up is
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann complete and all communication
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann channels are set up. The child continues
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann to run as the main daemon
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann process. This is the behavior of
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann traditional UNIX daemons. If this
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann setting is used, it is recommended to
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann also use the
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann <varname>PIDFile=</varname> option, so
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann that systemd can identify the main
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann process of the daemon. systemd will
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann proceed with starting follow-up units
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann as soon as the parent process
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann exits.</para>
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann <para>Behavior of
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann <option>oneshot</option> is similar to
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann <option>simple</option>; however, it
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann is expected that the process has to
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann exit before systemd starts follow-up
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann units. <varname>RemainAfterExit=</varname>
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann is particularly useful for this type
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann of service. This is the implied
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann default if neither
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann <varname>Type=</varname> or
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann <varname>ExecStart=</varname> are
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann specified.</para>
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann <para>Behavior of
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann <option>dbus</option> is similar to
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann <option>simple</option>; however, it is
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann expected that the daemon acquires a
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann name on the D-Bus bus, as configured
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann by
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann <varname>BusName=</varname>. systemd
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann will proceed with starting follow-up
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann units after the D-Bus bus name has been
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann acquired. Service units with this
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann option configured implicitly gain
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann dependencies on the
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann <filename>dbus.socket</filename>
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann unit. This type is the default if
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann <varname>BusName=</varname> is
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann specified.</para>
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann <para>Behavior of
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann <option>notify</option> is similar to
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann <option>simple</option>; however, it is
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann expected that the daemon sends a
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann notification message via
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann <citerefentry><refentrytitle>sd_notify</refentrytitle><manvolnum>3</manvolnum></citerefentry>
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann or an equivalent call when it has finished
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann starting up. systemd will proceed with
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann starting follow-up units after this
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann notification message has been sent. If
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann this option is used,
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann <varname>NotifyAccess=</varname> (see
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann below) should be set to open access to
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann the notification socket provided by
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann systemd. If
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann <varname>NotifyAccess=</varname> is
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann not set, it will be implicitly set to
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann <option>main</option>. Note that
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann currently
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann <varname>Type=</varname><option>notify</option>
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann will not work if used in combination with
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann <varname>PrivateNetwork=</varname><option>yes</option>.</para>
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann <para>Behavior of
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann <option>idle</option> is very similar
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann to <option>simple</option>; however,
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann actual execution of the service
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann binary is delayed until all jobs are
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann dispatched. This may be used to avoid
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann interleaving of output of shell
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann services with the status output on the
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann console.</para>
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann </listitem>
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann </varlistentry>
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann <varlistentry>
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann <term><varname>RemainAfterExit=</varname></term>
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann <listitem><para>Takes a boolean value
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann that specifies whether the service
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann shall be considered active even when
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann all its processes exited. Defaults to
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann <option>no</option>.</para>
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann </listitem>
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann </varlistentry>
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann <varlistentry>
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann <term><varname>GuessMainPID=</varname></term>
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann <listitem><para>Takes a boolean value
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann that specifies whether systemd should
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann try to guess the main PID of a service
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann if it cannot be determined
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann reliably. This option is ignored
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann unless <option>Type=forking</option>
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann is set and <option>PIDFile=</option>
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann is unset because for the other types
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann or with an explicitly configured PID
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann file, the main PID is always known. The
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann guessing algorithm might come to
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann incorrect conclusions if a daemon
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann consists of more than one process. If
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann the main PID cannot be determined,
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann failure detection and automatic
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann restarting of a service will not work
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann reliably. Defaults to
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann <option>yes</option>.</para>
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann </listitem>
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann </varlistentry>
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann <varlistentry>
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann <term><varname>PIDFile=</varname></term>
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann <listitem><para>Takes an absolute file
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann name pointing to the PID file of this
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann daemon. Use of this option is
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann recommended for services where
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann <varname>Type=</varname> is set to
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann <option>forking</option>. systemd will
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann read the PID of the main process of
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann the daemon after start-up of the
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann service. systemd will not write to the
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann file configured here.</para>
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann </listitem>
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann </varlistentry>
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann <varlistentry>
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann <term><varname>BusName=</varname></term>
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann <listitem><para>Takes a D-Bus bus
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann name that this service is reachable
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann as. This option is mandatory for
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann services where
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann <varname>Type=</varname> is set to
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann <option>dbus</option>.</para>
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann </listitem>
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann </varlistentry>
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann <varlistentry>
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann <term><varname>BusPolicy=</varname></term>
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann <listitem><para>If specified, a custom
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann <ulink url="https://code.google.com/p/d-bus/">kdbus</ulink>
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann endpoint will be created and installed as the
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann default bus node for the service. Such a custom
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann endpoint can hold an own set of policy rules
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann that are enforced on top of the bus-wide ones.
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann The custom endpoint is named after the service
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann it was created for, and its node will be
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann bind-mounted over the default bus node
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann location, so the service can only access the
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann bus through its own endpoint. Note that custom
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann bus endpoints default to a 'deny all' policy.
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann Hence, if at least one
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann <varname>BusPolicy=</varname> directive is
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann given, you have to make sure to add explicit
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann rules for everything the service should be able
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann to do.</para>
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann <para>The value of this directive is comprised
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann of two parts; the bus name, and a verb to
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann specify to granted access, which is one of
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann <option>see</option>,
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann <option>talk</option>, or
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann <option>own</option>.
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann <option>talk</option> implies
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann <option>see</option>, and <option>own</option>
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann implies both <option>talk</option> and
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann <option>see</option>.
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann If multiple access levels are specified for the
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann same bus name, the most powerful one takes
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann effect.
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann </para>
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann <para>Examples:</para>
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann <programlisting>BusPolicy=org.freedesktop.systemd1 talk</programlisting>
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann <programlisting>BusPolicy=org.foo.bar see</programlisting>
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann <para>This option is only available on kdbus enabled systems.</para>
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann </listitem>
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann </varlistentry>
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann <varlistentry>
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann <term><varname>ExecStart=</varname></term>
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann <listitem><para>Commands with their
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann arguments that are executed when this
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann service is started. The value is split
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann into zero or more command lines is
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann according to the rules described below
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann (see section "Command Lines" below).
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann </para>
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann <para>When <varname>Type</varname> is
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann not <option>oneshot</option>, only one
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann command may and must be given. When
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann <varname>Type=oneshot</varname> is
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann used, zero or more commands may be
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann specified. This can be specified by
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann providing multiple command lines in
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann the same directive, or alternatively,
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann this directive may be specified more
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann than once with the same effect. If the
c6f3f5b4b3ec439ae911ca0644237d96fd31893eMarcel Holtmann empty string is assigned to this
c6f3f5b4b3ec439ae911ca0644237d96fd31893eMarcel Holtmann option, the list of commands to start
c6f3f5b4b3ec439ae911ca0644237d96fd31893eMarcel Holtmann is reset, prior assignments of this
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann option will have no effect. If no
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann <varname>ExecStart=</varname> is
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann specified, then the service must have
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann <varname>RemainAfterExit=yes</varname>
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann set.</para>
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann <para>For each of the specified
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann commands, the first argument must be
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann an absolute path to an executable.
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann Optionally, if this file name is
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann prefixed with <literal>@</literal>,
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann the second token will be passed as
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann <literal>argv[0]</literal> to the
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann executed process, followed by the
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann further arguments specified. If the
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann absolute filename is prefixed with
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann <literal>-</literal>, an exit code of
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann the command normally considered a
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann failure (i.e. non-zero exit status or
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann abnormal exit due to signal) is
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann ignored and considered success. If
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann both <literal>-</literal> and
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann <literal>@</literal> are used, they
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann can appear in either order.</para>
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann <para>If more than one command is
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann specified, the commands are invoked
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann sequentially in the order they appear
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann in the unit file. If one of the
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann commands fails (and is not prefixed
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann with <literal>-</literal>), other
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann lines are not executed, and the unit
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann is considered failed.</para>
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann <para>Unless
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann <varname>Type=forking</varname> is
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann set, the process started via this
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann command line will be considered the
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann main process of the daemon.</para>
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann </listitem>
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann </varlistentry>
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann <varlistentry>
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann <term><varname>ExecStartPre=</varname></term>
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann <term><varname>ExecStartPost=</varname></term>
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann <listitem><para>Additional commands
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann that are executed before or after
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann the command in
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann <varname>ExecStart=</varname>, respectively.
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann Syntax is the same as for
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann <varname>ExecStart=</varname>, except
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann that multiple command lines are allowed
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann and the commands are executed one
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann after the other, serially.</para>
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann <para>If any of those commands (not
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann prefixed with <literal>-</literal>)
c4a3a17ee919e8b1197328394709edfe36d8b710Marcel Holtmann fail, the rest are not executed and
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann the unit is considered failed.</para>
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann </listitem>
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann </varlistentry>
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann <varlistentry>
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann <term><varname>ExecReload=</varname></term>
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann <listitem><para>Commands to execute to
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann trigger a configuration reload in the
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann service. This argument takes multiple
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann command lines, following the same
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann scheme as described for
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann <varname>ExecStart=</varname>
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann above. Use of this setting is
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann optional. Specifier and environment
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann variable substitution is supported
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann here following the same scheme as for
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann <varname>ExecStart=</varname>.</para>
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann <para>One additional, special
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann environment variable is set: if known,
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann <varname>$MAINPID</varname> is set to
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann the main process of the daemon, and
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann may be used for command lines like the
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann following:</para>
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann <programlisting>/bin/kill -HUP $MAINPID</programlisting>
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann <para>Note however that reloading a
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann daemon by sending a signal (as with
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann the example line above) is usually not
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann a good choice, because this is an
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann asynchronous operation and hence not
c6f3f5b4b3ec439ae911ca0644237d96fd31893eMarcel Holtmann suitable to order reloads of multiple
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann services against each other. It is
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann strongly recommended to set
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann <varname>ExecReload=</varname> to a
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann command that not only triggers a
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann configuration reload of the daemon,
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann but also synchronously waits for it to
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann complete.</para>
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann </listitem>
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann </varlistentry>
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann <varlistentry>
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann <term><varname>ExecStop=</varname></term>
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann <listitem><para>Commands to execute to
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann stop the service started via
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann <varname>ExecStart=</varname>. This
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann argument takes multiple command lines,
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann following the same scheme as described
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann for <varname>ExecStart=</varname>
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann above. Use of this setting is
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann optional. After the commands configured
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann in this option are run, all processes
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann remaining for a service are
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann terminated according to the
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann <varname>KillMode=</varname> setting
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann (see
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann <citerefentry><refentrytitle>systemd.kill</refentrytitle><manvolnum>5</manvolnum></citerefentry>). If
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann this option is not specified, the
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann process is terminated immediately when
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann service stop is requested. Specifier
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann and environment variable substitution
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann is supported (including
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann <varname>$MAINPID</varname>, see
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann above).</para></listitem>
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann </varlistentry>
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann <varlistentry>
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann <term><varname>ExecStopPost=</varname></term>
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann <listitem><para>Additional commands
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann that are executed after the service
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann was stopped. This includes cases where
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann the commands configured in
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann <varname>ExecStop=</varname> were used,
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann where the service does not have any
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann <varname>ExecStop=</varname> defined, or
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann where the service exited unexpectedly. This
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann argument takes multiple command lines,
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann following the same scheme as described
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann for <varname>ExecStart</varname>. Use
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann of these settings is
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann optional. Specifier and environment
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann variable substitution is
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann supported.</para></listitem>
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann </varlistentry>
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann <varlistentry>
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann <term><varname>RestartSec=</varname></term>
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann <listitem><para>Configures the time to
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann sleep before restarting a service (as
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann configured with
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann <varname>Restart=</varname>). Takes a
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann unit-less value in seconds, or a time
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann span value such as "5min
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann 20s". Defaults to
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann 100ms.</para></listitem>
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann </varlistentry>
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann <varlistentry>
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann <term><varname>TimeoutStartSec=</varname></term>
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann <listitem><para>Configures the time to
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann wait for start-up. If a
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann daemon service does not signal
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann start-up completion within the
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann configured time, the service will be
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann considered failed and will be shut
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann down again.
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann Takes a unit-less value in seconds, or a
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann time span value such as "5min
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann 20s". Pass <literal>0</literal> to
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann disable the timeout logic. Defaults to
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann <varname>DefaultTimeoutStartSec=</varname> from
94f5bbc626f2a4102debd9b17c964170a887cb49Marcel Holtmann the manager configuration file, except
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann when <varname>Type=oneshot</varname> is
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann used, in which case the timeout
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann is disabled by default
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann (see <citerefentry><refentrytitle>systemd-system.conf</refentrytitle><manvolnum>5</manvolnum></citerefentry>).
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann </para></listitem>
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann </varlistentry>
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann <varlistentry>
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann <term><varname>TimeoutStopSec=</varname></term>
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann <listitem><para>Configures the time to
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann wait for stop. If a service is asked
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann to stop, but does not terminate in the
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann specified time, it will be terminated
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann forcibly via <constant>SIGTERM</constant>,
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann and after another timeout of equal duration
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann with <constant>SIGKILL</constant> (see
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann <varname>KillMode=</varname>
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann in <citerefentry><refentrytitle>systemd.kill</refentrytitle><manvolnum>5</manvolnum></citerefentry>).
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann Takes a unit-less value in seconds, or a
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann time span value such as "5min
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann 20s". Pass <literal>0</literal> to disable
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann the timeout logic. Defaults to
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann <varname>DefaultTimeoutStopSec=</varname> from the
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann manager configuration file
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann (see <citerefentry><refentrytitle>systemd-system.conf</refentrytitle><manvolnum>5</manvolnum></citerefentry>).
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann </para></listitem>
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann </varlistentry>
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann <varlistentry>
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann <term><varname>TimeoutSec=</varname></term>
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann <listitem><para>A shorthand for configuring
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann both <varname>TimeoutStartSec=</varname>
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann and <varname>TimeoutStopSec=</varname>
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann to the specified value.
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann </para></listitem>
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann </varlistentry>
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann <varlistentry>
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann <term><varname>WatchdogSec=</varname></term>
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann <listitem><para>Configures the
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann watchdog timeout for a service. The
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann watchdog is activated when the start-up is
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann completed. The service must call
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann <citerefentry><refentrytitle>sd_notify</refentrytitle><manvolnum>3</manvolnum></citerefentry>
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann regularly with <literal>WATCHDOG=1</literal>
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann (i.e. the "keep-alive ping"). If the time
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann between two such calls is larger than
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann the configured time, then the service
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann is placed in a failed state and it will
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann be terminated with <varname>SIGABRT</varname>.
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann By setting <varname>Restart=</varname> to
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann <option>on-failure</option> or
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann <option>always</option>, the service
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann will be automatically restarted. The
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann time configured here will be passed to
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann the executed service process in the
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann <varname>WATCHDOG_USEC=</varname>
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann environment variable. This allows
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann daemons to automatically enable the
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann keep-alive pinging logic if watchdog
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann support is enabled for the service. If
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann this option is used,
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann <varname>NotifyAccess=</varname> (see
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann below) should be set to open access to
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann the notification socket provided by
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann systemd. If
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann <varname>NotifyAccess=</varname> is
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann not set, it will be implicitly set to
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann <option>main</option>. Defaults to 0,
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann which disables this
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann feature.</para></listitem>
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann </varlistentry>
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann <varlistentry>
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann <term><varname>Restart=</varname></term>
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann <listitem><para>Configures whether the
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann service shall be restarted when the
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann service process exits, is killed,
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann or a timeout is reached. The service
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann process may be the main service
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann process, but it may also be one of the
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann processes specified with
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann <varname>ExecStartPre=</varname>,
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann <varname>ExecStartPost=</varname>,
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann <varname>ExecStop=</varname>,
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann <varname>ExecStopPost=</varname>, or
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann <varname>ExecReload=</varname>.
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann When the death of the process is a
4b28cdeb2332cfbd3f5172b43a2f5f534b7e6e57Marcel Holtmann result of systemd operation (e.g. service
4b28cdeb2332cfbd3f5172b43a2f5f534b7e6e57Marcel Holtmann stop or restart), the service will not be
4b28cdeb2332cfbd3f5172b43a2f5f534b7e6e57Marcel Holtmann restarted. Timeouts include missing
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann the watchdog "keep-alive ping"
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann deadline and a service start, reload,
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann and stop operation timeouts.</para>
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann <para>Takes one of
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann <option>no</option>,
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann <option>on-success</option>,
c6f3f5b4b3ec439ae911ca0644237d96fd31893eMarcel Holtmann <option>on-failure</option>,
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann <option>on-abnormal</option>,
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann <option>on-watchdog</option>,
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann <option>on-abort</option>, or
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann <option>always</option>. If set to
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann <option>no</option> (the default), the
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann service will not be restarted. If set
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann to <option>on-success</option>, it
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann will be restarted only when the
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann service process exits cleanly. In
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann this context, a clean exit means an
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann exit code of 0, or one of the signals
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann <constant>SIGHUP</constant>,
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann <constant>SIGINT</constant>,
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann <constant>SIGTERM</constant> or
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann <constant>SIGPIPE</constant>, and
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann additionally, exit statuses and
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann signals specified in
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann <varname>SuccessExitStatus=</varname>.
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann If set to <option>on-failure</option>,
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann the service will be restarted when the
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann process exits with a non-zero exit
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann code, is terminated by a signal
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann (including on core dump, but excluding
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann the aforementiond four signals), when
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann an operation (such as service reload)
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann times out, and when the configured
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann watchdog timeout is triggered. If set
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann to <option>on-abnormal</option>, the
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann service will be restarted when the
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann process is terminated by a signal
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann (including on core dump, excluding the
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann aforementioned four signals), when an
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann operation times out, or when the
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann watchdog timeout is triggered. If set
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann to <option>on-abort</option>, the
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann service will be restarted only if the
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann service process exits due to an
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann uncaught signal not specified as a
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann clean exit status. If set to
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann <option>on-watchdog</option>, the
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann service will be restarted only if the
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann watchdog timeout for the service
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann expires. If set to
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann <option>always</option>, the service
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann will be restarted regardless of
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann whether it exited cleanly or not, got
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann terminated abnormally by a signal, or
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann hit a timeout.</para>
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann <table>
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann <title>Exit causes and the effect of the <varname>Restart=</varname> settings on them</title>
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann <tgroup cols='2'>
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann <colspec colname='path' />
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann <colspec colname='expl' />
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann <thead>
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann <row>
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann <entry>Restart settings/Exit causes</entry>
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann <entry><option>no</option></entry>
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann <entry><option>always</option></entry>
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann <entry><option>on-success</option></entry>
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann <entry><option>on-failure</option></entry>
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann <entry><option>on-abnormal</option></entry>
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann <entry><option>on-abort</option></entry>
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann <entry><option>on-watchdog</option></entry>
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann </row>
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann </thead>
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann <tbody>
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann <row>
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann <entry>Clean exit code or signal</entry>
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann <entry/>
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann <entry>X</entry>
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann <entry>X</entry>
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann <entry/>
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann <entry/>
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann <entry/>
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann <entry/>
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann </row>
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann <row>
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann <entry>Unclean exit code</entry>
5476ad087c0f2d45ab0dab1bab9ef3e9d70418bcMarcel Holtmann <entry/>
c6f3f5b4b3ec439ae911ca0644237d96fd31893eMarcel Holtmann <entry>X</entry>
c6f3f5b4b3ec439ae911ca0644237d96fd31893eMarcel Holtmann <entry/>
c6f3f5b4b3ec439ae911ca0644237d96fd31893eMarcel Holtmann <entry>X</entry>
c6f3f5b4b3ec439ae911ca0644237d96fd31893eMarcel Holtmann <entry/>
c6f3f5b4b3ec439ae911ca0644237d96fd31893eMarcel Holtmann <entry/>
c6f3f5b4b3ec439ae911ca0644237d96fd31893eMarcel Holtmann <entry/>
c6f3f5b4b3ec439ae911ca0644237d96fd31893eMarcel Holtmann </row>
c6f3f5b4b3ec439ae911ca0644237d96fd31893eMarcel Holtmann <row>
c6f3f5b4b3ec439ae911ca0644237d96fd31893eMarcel Holtmann <entry>Unclean signal</entry>
c6f3f5b4b3ec439ae911ca0644237d96fd31893eMarcel Holtmann <entry/>
c6f3f5b4b3ec439ae911ca0644237d96fd31893eMarcel Holtmann <entry>X</entry>
c6f3f5b4b3ec439ae911ca0644237d96fd31893eMarcel Holtmann <entry/>
c6f3f5b4b3ec439ae911ca0644237d96fd31893eMarcel Holtmann <entry>X</entry>
c6f3f5b4b3ec439ae911ca0644237d96fd31893eMarcel Holtmann <entry>X</entry>
c6f3f5b4b3ec439ae911ca0644237d96fd31893eMarcel Holtmann <entry>X</entry>
c6f3f5b4b3ec439ae911ca0644237d96fd31893eMarcel Holtmann <entry/>
c6f3f5b4b3ec439ae911ca0644237d96fd31893eMarcel Holtmann </row>
c6f3f5b4b3ec439ae911ca0644237d96fd31893eMarcel Holtmann <row>
c6f3f5b4b3ec439ae911ca0644237d96fd31893eMarcel Holtmann <entry>Timeout</entry>
c6f3f5b4b3ec439ae911ca0644237d96fd31893eMarcel Holtmann <entry/>
c6f3f5b4b3ec439ae911ca0644237d96fd31893eMarcel Holtmann <entry>X</entry>
c6f3f5b4b3ec439ae911ca0644237d96fd31893eMarcel Holtmann <entry/>
c6f3f5b4b3ec439ae911ca0644237d96fd31893eMarcel Holtmann <entry>X</entry>
c6f3f5b4b3ec439ae911ca0644237d96fd31893eMarcel Holtmann <entry>X</entry>
c6f3f5b4b3ec439ae911ca0644237d96fd31893eMarcel Holtmann <entry/>
c6f3f5b4b3ec439ae911ca0644237d96fd31893eMarcel Holtmann <entry/>
c6f3f5b4b3ec439ae911ca0644237d96fd31893eMarcel Holtmann </row>
c6f3f5b4b3ec439ae911ca0644237d96fd31893eMarcel Holtmann <row>
c6f3f5b4b3ec439ae911ca0644237d96fd31893eMarcel Holtmann <entry>Watchdog</entry>
c6f3f5b4b3ec439ae911ca0644237d96fd31893eMarcel Holtmann <entry/>
c6f3f5b4b3ec439ae911ca0644237d96fd31893eMarcel Holtmann <entry>X</entry>
c6f3f5b4b3ec439ae911ca0644237d96fd31893eMarcel Holtmann <entry/>
c6f3f5b4b3ec439ae911ca0644237d96fd31893eMarcel Holtmann <entry>X</entry>
c6f3f5b4b3ec439ae911ca0644237d96fd31893eMarcel Holtmann <entry>X</entry>
c6f3f5b4b3ec439ae911ca0644237d96fd31893eMarcel Holtmann <entry/>
c6f3f5b4b3ec439ae911ca0644237d96fd31893eMarcel Holtmann <entry>X</entry>
c6f3f5b4b3ec439ae911ca0644237d96fd31893eMarcel Holtmann </row>
c6f3f5b4b3ec439ae911ca0644237d96fd31893eMarcel Holtmann </tbody>
c6f3f5b4b3ec439ae911ca0644237d96fd31893eMarcel Holtmann </tgroup>
c6f3f5b4b3ec439ae911ca0644237d96fd31893eMarcel Holtmann </table>
c6f3f5b4b3ec439ae911ca0644237d96fd31893eMarcel Holtmann
c6f3f5b4b3ec439ae911ca0644237d96fd31893eMarcel Holtmann <para>As exceptions to the setting
c6f3f5b4b3ec439ae911ca0644237d96fd31893eMarcel Holtmann above the service will not be
c6f3f5b4b3ec439ae911ca0644237d96fd31893eMarcel Holtmann restarted if the exit code or signal
c6f3f5b4b3ec439ae911ca0644237d96fd31893eMarcel Holtmann is specified in
c6f3f5b4b3ec439ae911ca0644237d96fd31893eMarcel Holtmann <varname>RestartPreventExitStatus=</varname>
c6f3f5b4b3ec439ae911ca0644237d96fd31893eMarcel Holtmann (see below). Also, the services will
c6f3f5b4b3ec439ae911ca0644237d96fd31893eMarcel Holtmann always be restarted if the exit code
c6f3f5b4b3ec439ae911ca0644237d96fd31893eMarcel Holtmann or signal is specified in
c6f3f5b4b3ec439ae911ca0644237d96fd31893eMarcel Holtmann <varname>RestartForceExitStatus=</varname>
c6f3f5b4b3ec439ae911ca0644237d96fd31893eMarcel Holtmann (see below).</para>
c6f3f5b4b3ec439ae911ca0644237d96fd31893eMarcel Holtmann
c6f3f5b4b3ec439ae911ca0644237d96fd31893eMarcel Holtmann <para>Setting this to
c6f3f5b4b3ec439ae911ca0644237d96fd31893eMarcel Holtmann <option>on-failure</option> is the
c6f3f5b4b3ec439ae911ca0644237d96fd31893eMarcel Holtmann recommended choice for long-running
c6f3f5b4b3ec439ae911ca0644237d96fd31893eMarcel Holtmann services, in order to increase
c6f3f5b4b3ec439ae911ca0644237d96fd31893eMarcel Holtmann reliability by attempting automatic
c6f3f5b4b3ec439ae911ca0644237d96fd31893eMarcel Holtmann recovery from errors. For services
c6f3f5b4b3ec439ae911ca0644237d96fd31893eMarcel Holtmann that shall be able to terminate on
c6f3f5b4b3ec439ae911ca0644237d96fd31893eMarcel Holtmann their own choice (and avoid
c6f3f5b4b3ec439ae911ca0644237d96fd31893eMarcel Holtmann immediate restarting),
c6f3f5b4b3ec439ae911ca0644237d96fd31893eMarcel Holtmann <option>on-abnormal</option> is an
c6f3f5b4b3ec439ae911ca0644237d96fd31893eMarcel Holtmann alternative choice.</para>
c6f3f5b4b3ec439ae911ca0644237d96fd31893eMarcel Holtmann </listitem>
c6f3f5b4b3ec439ae911ca0644237d96fd31893eMarcel Holtmann </varlistentry>
c6f3f5b4b3ec439ae911ca0644237d96fd31893eMarcel Holtmann
c6f3f5b4b3ec439ae911ca0644237d96fd31893eMarcel Holtmann <varlistentry>
c6f3f5b4b3ec439ae911ca0644237d96fd31893eMarcel Holtmann <term><varname>SuccessExitStatus=</varname></term>
c6f3f5b4b3ec439ae911ca0644237d96fd31893eMarcel Holtmann <listitem><para>Takes a list of exit
c6f3f5b4b3ec439ae911ca0644237d96fd31893eMarcel Holtmann status definitions that when returned
c6f3f5b4b3ec439ae911ca0644237d96fd31893eMarcel Holtmann by the main service process will be
c6f3f5b4b3ec439ae911ca0644237d96fd31893eMarcel Holtmann considered successful termination, in
c6f3f5b4b3ec439ae911ca0644237d96fd31893eMarcel Holtmann addition to the normal successful exit
c6f3f5b4b3ec439ae911ca0644237d96fd31893eMarcel Holtmann code 0 and the signals <constant>SIGHUP</constant>, <constant>SIGINT</constant>,
c6f3f5b4b3ec439ae911ca0644237d96fd31893eMarcel Holtmann <constant>SIGTERM</constant>, and <constant>SIGPIPE</constant>. Exit status
c6f3f5b4b3ec439ae911ca0644237d96fd31893eMarcel Holtmann definitions can either be numeric exit
c6f3f5b4b3ec439ae911ca0644237d96fd31893eMarcel Holtmann codes or termination signal names,
c6f3f5b4b3ec439ae911ca0644237d96fd31893eMarcel Holtmann separated by spaces. For example:
c6f3f5b4b3ec439ae911ca0644237d96fd31893eMarcel Holtmann <programlisting>SuccessExitStatus=1 2 8 SIGKILL</programlisting>
c6f3f5b4b3ec439ae911ca0644237d96fd31893eMarcel Holtmann ensures that exit codes 1, 2, 8 and
c6f3f5b4b3ec439ae911ca0644237d96fd31893eMarcel Holtmann the termination signal
c6f3f5b4b3ec439ae911ca0644237d96fd31893eMarcel Holtmann <constant>SIGKILL</constant> are
c6f3f5b4b3ec439ae911ca0644237d96fd31893eMarcel Holtmann considered clean service terminations.
c6f3f5b4b3ec439ae911ca0644237d96fd31893eMarcel Holtmann </para>
c6f3f5b4b3ec439ae911ca0644237d96fd31893eMarcel Holtmann
c6f3f5b4b3ec439ae911ca0644237d96fd31893eMarcel Holtmann <para>Note that if a process has a
c6f3f5b4b3ec439ae911ca0644237d96fd31893eMarcel Holtmann signal handler installed and exits by
c6f3f5b4b3ec439ae911ca0644237d96fd31893eMarcel Holtmann calling
c6f3f5b4b3ec439ae911ca0644237d96fd31893eMarcel Holtmann <citerefentry><refentrytitle>_exit</refentrytitle><manvolnum>2</manvolnum></citerefentry>
c6f3f5b4b3ec439ae911ca0644237d96fd31893eMarcel Holtmann in response to a signal, the
c6f3f5b4b3ec439ae911ca0644237d96fd31893eMarcel Holtmann information about the signal is lost.
c6f3f5b4b3ec439ae911ca0644237d96fd31893eMarcel Holtmann Programs should instead perform cleanup and kill themselves with the same signal instead. See
c6f3f5b4b3ec439ae911ca0644237d96fd31893eMarcel Holtmann <ulink url="http://www.cons.org/cracauer/sigint.html">Proper handling of SIGINT/SIGQUIT — How to be a proper program</ulink>.</para>
c6f3f5b4b3ec439ae911ca0644237d96fd31893eMarcel Holtmann
c6f3f5b4b3ec439ae911ca0644237d96fd31893eMarcel Holtmann <para>This option may appear more than once,
c6f3f5b4b3ec439ae911ca0644237d96fd31893eMarcel Holtmann in which case the list of successful
c6f3f5b4b3ec439ae911ca0644237d96fd31893eMarcel Holtmann exit statuses is merged. If the empty
c6f3f5b4b3ec439ae911ca0644237d96fd31893eMarcel Holtmann string is assigned to this option, the
c6f3f5b4b3ec439ae911ca0644237d96fd31893eMarcel Holtmann list is reset, all prior assignments
c6f3f5b4b3ec439ae911ca0644237d96fd31893eMarcel Holtmann of this option will have no
c6f3f5b4b3ec439ae911ca0644237d96fd31893eMarcel Holtmann effect.</para></listitem>
c6f3f5b4b3ec439ae911ca0644237d96fd31893eMarcel Holtmann </varlistentry>
0234c599218518b1eb478d64d9883ba46e4ce5d8Marcel Holtmann
0234c599218518b1eb478d64d9883ba46e4ce5d8Marcel Holtmann <varlistentry>
0234c599218518b1eb478d64d9883ba46e4ce5d8Marcel Holtmann <term><varname>RestartPreventExitStatus=</varname></term>
0234c599218518b1eb478d64d9883ba46e4ce5d8Marcel Holtmann <listitem><para>Takes a list of exit
0234c599218518b1eb478d64d9883ba46e4ce5d8Marcel Holtmann status definitions that when returned
0234c599218518b1eb478d64d9883ba46e4ce5d8Marcel Holtmann by the main service process will
0234c599218518b1eb478d64d9883ba46e4ce5d8Marcel Holtmann prevent automatic service restarts,
0234c599218518b1eb478d64d9883ba46e4ce5d8Marcel Holtmann regardless of the restart setting
0234c599218518b1eb478d64d9883ba46e4ce5d8Marcel Holtmann configured with
0234c599218518b1eb478d64d9883ba46e4ce5d8Marcel Holtmann <varname>Restart=</varname>. Exit
0234c599218518b1eb478d64d9883ba46e4ce5d8Marcel Holtmann status definitions can either be
0234c599218518b1eb478d64d9883ba46e4ce5d8Marcel Holtmann numeric exit codes or termination
0234c599218518b1eb478d64d9883ba46e4ce5d8Marcel Holtmann signal names, and are separated by
0234c599218518b1eb478d64d9883ba46e4ce5d8Marcel Holtmann spaces. Defaults to the empty list, so
0234c599218518b1eb478d64d9883ba46e4ce5d8Marcel Holtmann that, by default, no exit status is
0234c599218518b1eb478d64d9883ba46e4ce5d8Marcel Holtmann excluded from the configured restart
0234c599218518b1eb478d64d9883ba46e4ce5d8Marcel Holtmann logic. For example:
0234c599218518b1eb478d64d9883ba46e4ce5d8Marcel Holtmann <programlisting>RestartPreventExitStatus=1 6 SIGABRT</programlisting> ensures that exit
c4a3a17ee919e8b1197328394709edfe36d8b710Marcel Holtmann codes 1 and 6 and the termination
c4a3a17ee919e8b1197328394709edfe36d8b710Marcel Holtmann signal <constant>SIGABRT</constant> will
c4a3a17ee919e8b1197328394709edfe36d8b710Marcel Holtmann not result in automatic service
c4a3a17ee919e8b1197328394709edfe36d8b710Marcel Holtmann restarting. This
c4a3a17ee919e8b1197328394709edfe36d8b710Marcel Holtmann option may appear more than once, in
c4a3a17ee919e8b1197328394709edfe36d8b710Marcel Holtmann which case the list of restart-preventing
c4a3a17ee919e8b1197328394709edfe36d8b710Marcel Holtmann statuses is merged. If the empty
c4a3a17ee919e8b1197328394709edfe36d8b710Marcel Holtmann string is assigned to this option, the
c4a3a17ee919e8b1197328394709edfe36d8b710Marcel Holtmann list is reset and all prior assignments
c4a3a17ee919e8b1197328394709edfe36d8b710Marcel Holtmann of this option will have no
c4a3a17ee919e8b1197328394709edfe36d8b710Marcel Holtmann effect.</para></listitem>
c4a3a17ee919e8b1197328394709edfe36d8b710Marcel Holtmann </varlistentry>
43d9c2b5848b1363b659c38443c1c94db57415fdMarcel Holtmann
43d9c2b5848b1363b659c38443c1c94db57415fdMarcel Holtmann <varlistentry>
43d9c2b5848b1363b659c38443c1c94db57415fdMarcel Holtmann <term><varname>RestartForceExitStatus=</varname></term>
43d9c2b5848b1363b659c38443c1c94db57415fdMarcel Holtmann <listitem><para>Takes a list of exit
43d9c2b5848b1363b659c38443c1c94db57415fdMarcel Holtmann status definitions that when returned
43d9c2b5848b1363b659c38443c1c94db57415fdMarcel Holtmann by the main service process will force
43d9c2b5848b1363b659c38443c1c94db57415fdMarcel Holtmann automatic service restarts, regardless
43d9c2b5848b1363b659c38443c1c94db57415fdMarcel Holtmann of the restart setting configured with
43d9c2b5848b1363b659c38443c1c94db57415fdMarcel Holtmann <varname>Restart=</varname>. The
43d9c2b5848b1363b659c38443c1c94db57415fdMarcel Holtmann argument format is similar to
43d9c2b5848b1363b659c38443c1c94db57415fdMarcel Holtmann <varname>RestartPreventExitStatus=</varname>.</para></listitem>
43d9c2b5848b1363b659c38443c1c94db57415fdMarcel Holtmann </varlistentry>
43d9c2b5848b1363b659c38443c1c94db57415fdMarcel Holtmann
43d9c2b5848b1363b659c38443c1c94db57415fdMarcel Holtmann <varlistentry>
43d9c2b5848b1363b659c38443c1c94db57415fdMarcel Holtmann <term><varname>PermissionsStartOnly=</varname></term>
43d9c2b5848b1363b659c38443c1c94db57415fdMarcel Holtmann <listitem><para>Takes a boolean
43d9c2b5848b1363b659c38443c1c94db57415fdMarcel Holtmann argument. If true, the permission-related
43d9c2b5848b1363b659c38443c1c94db57415fdMarcel Holtmann execution options, as
4b28cdeb2332cfbd3f5172b43a2f5f534b7e6e57Marcel Holtmann configured with
4b28cdeb2332cfbd3f5172b43a2f5f534b7e6e57Marcel Holtmann <varname>User=</varname> and similar
4b28cdeb2332cfbd3f5172b43a2f5f534b7e6e57Marcel Holtmann options (see
4b28cdeb2332cfbd3f5172b43a2f5f534b7e6e57Marcel Holtmann <citerefentry><refentrytitle>systemd.exec</refentrytitle><manvolnum>5</manvolnum></citerefentry>
4b28cdeb2332cfbd3f5172b43a2f5f534b7e6e57Marcel Holtmann for more information), are only applied
4b28cdeb2332cfbd3f5172b43a2f5f534b7e6e57Marcel Holtmann to the process started with
4b28cdeb2332cfbd3f5172b43a2f5f534b7e6e57Marcel Holtmann <varname>ExecStart=</varname>, and not
4b28cdeb2332cfbd3f5172b43a2f5f534b7e6e57Marcel Holtmann to the various other
4b28cdeb2332cfbd3f5172b43a2f5f534b7e6e57Marcel Holtmann <varname>ExecStartPre=</varname>,
4b28cdeb2332cfbd3f5172b43a2f5f534b7e6e57Marcel Holtmann <varname>ExecStartPost=</varname>,
4b28cdeb2332cfbd3f5172b43a2f5f534b7e6e57Marcel Holtmann <varname>ExecReload=</varname>,
4b28cdeb2332cfbd3f5172b43a2f5f534b7e6e57Marcel Holtmann <varname>ExecStop=</varname>, and
4b28cdeb2332cfbd3f5172b43a2f5f534b7e6e57Marcel Holtmann <varname>ExecStopPost=</varname>
4b28cdeb2332cfbd3f5172b43a2f5f534b7e6e57Marcel Holtmann commands. If false, the setting is
4b28cdeb2332cfbd3f5172b43a2f5f534b7e6e57Marcel Holtmann applied to all configured commands the
4b28cdeb2332cfbd3f5172b43a2f5f534b7e6e57Marcel Holtmann same way. Defaults to
4b28cdeb2332cfbd3f5172b43a2f5f534b7e6e57Marcel Holtmann false.</para></listitem>
4b28cdeb2332cfbd3f5172b43a2f5f534b7e6e57Marcel Holtmann </varlistentry>
4b28cdeb2332cfbd3f5172b43a2f5f534b7e6e57Marcel Holtmann
4b28cdeb2332cfbd3f5172b43a2f5f534b7e6e57Marcel Holtmann <varlistentry>
4b28cdeb2332cfbd3f5172b43a2f5f534b7e6e57Marcel Holtmann <term><varname>RootDirectoryStartOnly=</varname></term>
4b28cdeb2332cfbd3f5172b43a2f5f534b7e6e57Marcel Holtmann <listitem><para>Takes a boolean
4b28cdeb2332cfbd3f5172b43a2f5f534b7e6e57Marcel Holtmann argument. If true, the root directory,
4b28cdeb2332cfbd3f5172b43a2f5f534b7e6e57Marcel Holtmann as configured with the
4b28cdeb2332cfbd3f5172b43a2f5f534b7e6e57Marcel Holtmann <varname>RootDirectory=</varname>
4b28cdeb2332cfbd3f5172b43a2f5f534b7e6e57Marcel Holtmann option (see
4b28cdeb2332cfbd3f5172b43a2f5f534b7e6e57Marcel Holtmann <citerefentry><refentrytitle>systemd.exec</refentrytitle><manvolnum>5</manvolnum></citerefentry>
4b28cdeb2332cfbd3f5172b43a2f5f534b7e6e57Marcel Holtmann for more information), is only applied
4b28cdeb2332cfbd3f5172b43a2f5f534b7e6e57Marcel Holtmann to the process started with
4b28cdeb2332cfbd3f5172b43a2f5f534b7e6e57Marcel Holtmann <varname>ExecStart=</varname>, and not
e525326bd07ebf3cabcfd730bc479166723f2d44Marcel Holtmann to the various other
e525326bd07ebf3cabcfd730bc479166723f2d44Marcel Holtmann <varname>ExecStartPre=</varname>,
e525326bd07ebf3cabcfd730bc479166723f2d44Marcel Holtmann <varname>ExecStartPost=</varname>,
e525326bd07ebf3cabcfd730bc479166723f2d44Marcel Holtmann <varname>ExecReload=</varname>,
e525326bd07ebf3cabcfd730bc479166723f2d44Marcel Holtmann <varname>ExecStop=</varname>, and
e525326bd07ebf3cabcfd730bc479166723f2d44Marcel Holtmann <varname>ExecStopPost=</varname>
e525326bd07ebf3cabcfd730bc479166723f2d44Marcel Holtmann commands. If false, the setting is
e525326bd07ebf3cabcfd730bc479166723f2d44Marcel Holtmann applied to all configured commands the
e525326bd07ebf3cabcfd730bc479166723f2d44Marcel Holtmann same way. Defaults to
f401e2b24ba17452f9655993a6dedefdffe06d23Marcel Holtmann false.</para></listitem>
f401e2b24ba17452f9655993a6dedefdffe06d23Marcel Holtmann </varlistentry>
f401e2b24ba17452f9655993a6dedefdffe06d23Marcel Holtmann
f401e2b24ba17452f9655993a6dedefdffe06d23Marcel Holtmann <varlistentry>
f401e2b24ba17452f9655993a6dedefdffe06d23Marcel Holtmann <term><varname>NonBlocking=</varname></term>
f401e2b24ba17452f9655993a6dedefdffe06d23Marcel Holtmann <listitem><para>Set the
f401e2b24ba17452f9655993a6dedefdffe06d23Marcel Holtmann <constant>O_NONBLOCK</constant> flag
f401e2b24ba17452f9655993a6dedefdffe06d23Marcel Holtmann for all file descriptors passed via
f401e2b24ba17452f9655993a6dedefdffe06d23Marcel Holtmann socket-based activation. If true, all
f401e2b24ba17452f9655993a6dedefdffe06d23Marcel Holtmann file descriptors >= 3 (i.e. all except
f401e2b24ba17452f9655993a6dedefdffe06d23Marcel Holtmann stdin, stdout, and stderr) will have
f401e2b24ba17452f9655993a6dedefdffe06d23Marcel Holtmann the <constant>O_NONBLOCK</constant> flag
f89b42ec0fd51feab5566d6bdbacee101023c037Marcel Holtmann set and hence are in
f89b42ec0fd51feab5566d6bdbacee101023c037Marcel Holtmann non-blocking mode. This option is only
f89b42ec0fd51feab5566d6bdbacee101023c037Marcel Holtmann useful in conjunction with a socket
f89b42ec0fd51feab5566d6bdbacee101023c037Marcel Holtmann unit, as described in
f89b42ec0fd51feab5566d6bdbacee101023c037Marcel Holtmann <citerefentry><refentrytitle>systemd.socket</refentrytitle><manvolnum>5</manvolnum></citerefentry>. Defaults
f89b42ec0fd51feab5566d6bdbacee101023c037Marcel Holtmann to false.</para></listitem>
f89b42ec0fd51feab5566d6bdbacee101023c037Marcel Holtmann </varlistentry>
f89b42ec0fd51feab5566d6bdbacee101023c037Marcel Holtmann
f89b42ec0fd51feab5566d6bdbacee101023c037Marcel Holtmann <varlistentry>
f89b42ec0fd51feab5566d6bdbacee101023c037Marcel Holtmann <term><varname>NotifyAccess=</varname></term>
f89b42ec0fd51feab5566d6bdbacee101023c037Marcel Holtmann <listitem><para>Controls access to the
f89b42ec0fd51feab5566d6bdbacee101023c037Marcel Holtmann service status notification socket, as
f89b42ec0fd51feab5566d6bdbacee101023c037Marcel Holtmann accessible via the
f89b42ec0fd51feab5566d6bdbacee101023c037Marcel Holtmann <citerefentry><refentrytitle>sd_notify</refentrytitle><manvolnum>3</manvolnum></citerefentry>
f89b42ec0fd51feab5566d6bdbacee101023c037Marcel Holtmann call. Takes one of
f89b42ec0fd51feab5566d6bdbacee101023c037Marcel Holtmann <option>none</option> (the default),
f89b42ec0fd51feab5566d6bdbacee101023c037Marcel Holtmann <option>main</option> or
f89b42ec0fd51feab5566d6bdbacee101023c037Marcel Holtmann <option>all</option>. If
<option>none</option>, no daemon status
updates are accepted from the service
processes, all status update messages
are ignored. If <option>main</option>,
only service updates sent from the
main process of the service are
accepted. If <option>all</option>, all
services updates from all members of
the service's control group are
accepted. This option should be set to
open access to the notification socket
when using
<varname>Type=notify</varname> or
<varname>WatchdogSec=</varname> (see
above). If those options are used but
<varname>NotifyAccess=</varname> is not
configured, it will be implicitly set
to
<option>main</option>.</para></listitem>
</varlistentry>
<varlistentry>
<term><varname>Sockets=</varname></term>
<listitem><para>Specifies the name of
the socket units this service shall
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
(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
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, and all prior uses of
this setting will have no
effect.</para></listitem>
</varlistentry>
<varlistentry>
<term><varname>StartLimitInterval=</varname></term>
<term><varname>StartLimitBurst=</varname></term>
<listitem><para>Configure service
start rate limiting. By default,
services which are started more
than 5 times within 10 seconds are not
permitted to start any more times
until the 10 second interval ends. With
these two options, this rate limiting
may be modified. Use
<varname>StartLimitInterval=</varname>
to configure the checking interval (defaults to
<varname>DefaultStartLimitInterval=</varname> in
manager configuration file, set to 0 to disable
any kind of rate limiting). Use
<varname>StartLimitBurst=</varname> to
configure how many starts per interval
are allowed (defaults to
<varname>DefaultStartLimitBurst=</varname> in
manager configuration file). These
configuration options are particularly
useful in conjunction with
<varname>Restart=</varname>; however,
they apply to all kinds of starts
(including manual), not just those
triggered by the
<varname>Restart=</varname> logic.
Note that units which are configured
for <varname>Restart=</varname> and
which reach the start limit are not
attempted to be restarted anymore;
however, they may still be restarted
manually at a later point, from which
point on, the restart logic is again
activated. Note that
<command>systemctl
reset-failed</command> will cause the
restart rate counter for a service to
be flushed, which is useful if the
administrator wants to manually start
a service and the start limit
interferes with
that.</para></listitem>
</varlistentry>
<varlistentry>
<term><varname>StartLimitAction=</varname></term>
<listitem><para>Configure the action
to take if the rate limit configured
with
<varname>StartLimitInterval=</varname>
and
<varname>StartLimitBurst=</varname> is
hit. Takes one of
<option>none</option>,
<option>reboot</option>,
<option>reboot-force</option>,
<option>reboot-immediate</option>,
<option>poweroff</option>,
<option>poweroff-force</option> or
<option>poweroff-immediate</option>. If
<option>none</option> is set, hitting
the rate limit will trigger no action
besides that the start will not be
permitted. <option>reboot</option>
causes a reboot following the normal
shutdown procedure (i.e. equivalent to
<command>systemctl reboot</command>).
<option>reboot-force</option> causes a
forced reboot which will terminate all
processes forcibly but should cause no
dirty file systems on reboot
(i.e. equivalent to <command>systemctl
reboot -f</command>) and
<option>reboot-immediate</option>
causes immediate execution of the
<citerefentry><refentrytitle>reboot</refentrytitle><manvolnum>2</manvolnum></citerefentry>
system call, which might result in
data loss. Similar,
<option>poweroff</option>,
<option>poweroff-force</option>,
<option>poweroff-immediate</option>
have the effect of powering down the
system with similar
semantics. Defaults to
<option>none</option>.</para></listitem>
</varlistentry>
<varlistentry>
<term><varname>FailureAction=</varname></term>
<listitem><para>Configure the action
to take when the service enters a failed
state. Takes the same values as
<varname>StartLimitAction=</varname>
and executes the same actions.
Defaults to <option>none</option>.
</para></listitem>
</varlistentry>
<varlistentry>
<term><varname>RebootArgument=</varname></term>
<listitem><para>Configure the optional
argument for the
<citerefentry><refentrytitle>reboot</refentrytitle><manvolnum>2</manvolnum></citerefentry>
system call if
<varname>StartLimitAction=</varname>
or <varname>FailureAction=</varname>
is a reboot action. This works just
like the optional argument to
<command>systemctl reboot</command>
command.</para></listitem>
</varlistentry>
<varlistentry>
<term><varname>FileDescriptorStoreMax=</varname></term>
<listitem><para>Configure how many
file descriptors may be stored in the
service manager for the service using
<citerefentry><refentrytitle>sd_pid_notify_with_fds</refentrytitle><manvolnum>3</manvolnum></citerefentry>'s
<literal>FDSTORE=1</literal>
messages. This is useful for
implementing service restart schemes
where the state is serialized to
<filename>/run</filename> and the file
descriptors passed to the service
manager, to allow restarts without
losing state. Defaults to 0, i.e. no
file descriptors may be stored in the
service manager by default. All file
descriptors passed to the service
manager from a specific service are
passed back to the service's main
process on the next service
restart. Any file descriptors passed
to the service manager are
automatically closed when POLLHUP or
POLLERR is seen on them, or when the
service is fully stopped and no job
queued or being executed for
it.</para></listitem>
</varlistentry>
</variablelist>
<para>Check
<citerefentry><refentrytitle>systemd.exec</refentrytitle><manvolnum>5</manvolnum></citerefentry>
and
<citerefentry><refentrytitle>systemd.kill</refentrytitle><manvolnum>5</manvolnum></citerefentry>
for more settings.</para>
</refsect1>
<refsect1>
<title>Command lines</title>
<para>This section describes command line parsing and
variable and specifier substitions for
<varname>ExecStart=</varname>,
<varname>ExecStartPre=</varname>,
<varname>ExecStartPost=</varname>,
<varname>ExecReload=</varname>,
<varname>ExecStop=</varname>, and
<varname>ExecStopPost=</varname> options.</para>
<para>Multiple command lines may be concatenated in a
single directive by separating them with semicolons
(these semicolons must be passed as separate words).
Lone semicolons may be escaped as
<literal>\;</literal>.</para>
<para>Each command line is split on whitespace, with
the first item being the command to execute, and the
subsequent items being the arguments. Double quotes
("...") and single quotes ('...') may be used, in
which case everything until the next matching quote
becomes part of the same argument. C-style escapes are
also supported, see table below. Quotes themselves are
removed after parsing and escape sequences
substituted. In addition, a trailing backslash
(<literal>\</literal>) may be used to merge lines.
</para>
<para>This syntax is intended to be very similar to
shell syntax, but only the meta-characters and
expansions described in the following paragraphs are
understood. Specifically, redirection using
<literal>&lt;</literal>, <literal>&lt;&lt;</literal>,
<literal>&gt;</literal>, and
<literal>&gt;&gt;</literal>, pipes using
<literal>|</literal>, running programs in the
background using <literal>&amp;</literal>, and
<emphasis>other elements of shell syntax are not
supported</emphasis>.</para>
<para>The command to execute must an absolute path
name. It may contain spaces, but control characters
are not allowed.</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>Basic environment variable substitution is
supported. Use <literal>${FOO}</literal> as part of a
word, or as a word of its own, on the command line, in
which case it will be replaced by the value of the
environment variable including all whitespace it
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. 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
<varname>EnvironmentFile=</varname>. In addition,
variables listed in the section "Environment variables
in spawned processes" in
<citerefentry><refentrytitle>systemd.exec</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
which are considered "static configuration", may be
used (this includes e.g. <varname>$USER</varname>, but
not <varname>$TERM</varname>).</para>
<para>Note that shell command lines are not directly
supported. If shell command lines are to be used, they
need to be passed explicitly to a shell implementation
of some kind. Example:</para>
<programlisting>ExecStart=/bin/sh -c 'dmesg | tac'</programlisting>
<para>Example:</para>
<programlisting>ExecStart=/bin/echo one ; /bin/echo "two two"</programlisting>
<para>This will execute <command>/bin/echo</command>
two times, each time with one argument:
<literal>one</literal> and <literal>two two</literal>,
respectively. Because two commands are specified,
<varname>Type=oneshot</varname> must be used.</para>
<para>Example:</para>
<programlisting>ExecStart=/bin/echo / &gt;/dev/null &amp; \; \
/bin/ls</programlisting>
<para>This will execute <command>/bin/echo</command>
with five arguments: <literal>/</literal>,
<literal>&gt;/dev/null</literal>,
<literal>&amp;</literal>, <literal>;</literal>, and
<literal>/bin/ls</literal>.</para>
<table>
<title>C escapes supported in command lines and environment variables</title>
<tgroup cols='2'>
<colspec colname='escape' />
<colspec colname='meaning' />
<thead>
<row>
<entry>Literal</entry>
<entry>Actual value</entry>
</row>
</thead>
<tbody>
<row>
<entry><literal>\a</literal></entry>
<entry>bell</entry>
</row>
<row>
<entry><literal>\b</literal></entry>
<entry>backspace</entry>
</row>
<row>
<entry><literal>\f</literal></entry>
<entry>form feed</entry>
</row>
<row>
<entry><literal>\n</literal></entry>
<entry>newline</entry>
</row>
<row>
<entry><literal>\r</literal></entry>
<entry>carriage return</entry>
</row>
<row>
<entry><literal>\t</literal></entry>
<entry>tab</entry>
</row>
<row>
<entry><literal>\v</literal></entry>
<entry>vertical tab</entry>
</row>
<row>
<entry><literal>\\</literal></entry>
<entry>backslash</entry>
</row>
<row>
<entry><literal>\"</literal></entry>
<entry>double quotation mark</entry>
</row>
<row>
<entry><literal>\'</literal></entry>
<entry>single quotation mark</entry>
</row>
<row>
<entry><literal>\s</literal></entry>
<entry>space</entry>
</row>
<row>
<entry><literal>\x<replaceable>xx</replaceable></literal></entry>
<entry>character number <replaceable>xx</replaceable> in hexadecimal encoding</entry>
</row>
<row>
<entry><literal>\<replaceable>nnn</replaceable></literal></entry>
<entry>character number <replaceable>nnn</replaceable> in octal encoding</entry>
</row>
</tbody>
</tgroup>
</table>
</refsect1>
<refsect1>
<title>See Also</title>
<para>
<citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
<citerefentry><refentrytitle>systemctl</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
<citerefentry><refentrytitle>systemd.unit</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
<citerefentry><refentrytitle>systemd.exec</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
<citerefentry><refentrytitle>systemd.resource-control</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>
</refentry>