<?xml version='1.0'?> <!--*-nxml-*-->
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
-<!-- SPDX-License-Identifier: LGPL-2.1+ -->
+<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
-<refentry id="systemd.kill">
+<refentry id="systemd.kill" xmlns:xi="http://www.w3.org/2001/XInclude">
<refentryinfo>
<title>systemd.kill</title>
<productname>systemd</productname>
<varlistentry>
<term><varname>KillMode=</varname></term>
- <listitem><para>Specifies how processes of this unit shall be
- killed. One of
- <option>control-group</option>,
- <option>process</option>,
- <option>mixed</option>,
+ <listitem><para>Specifies how processes of this unit shall be killed. One of
+ <option>control-group</option>, <option>mixed</option>, <option>process</option>,
<option>none</option>.</para>
- <para>If set to <option>control-group</option>, all remaining
- processes in the control group of this unit will be killed on
- unit stop (for services: after the stop command is executed,
- as configured with <varname>ExecStop=</varname>). If set to
- <option>process</option>, only the main process itself is
- killed. If set to <option>mixed</option>, the
- <constant>SIGTERM</constant> signal (see below) is sent to the
- main process while the subsequent <constant>SIGKILL</constant>
- signal (see below) is sent to all remaining processes of the
- unit's control group. If set to <option>none</option>, no
- process is killed. In this case, only the stop command will be
- executed on unit stop, but no process will be killed otherwise.
- Processes remaining alive after stop are left in their control
- group and the control group continues to exist after stop
- unless it is empty.</para>
+ <para>If set to <option>control-group</option>, all remaining processes in the control group of this
+ unit will be killed on unit stop (for services: after the stop command is executed, as configured
+ with <varname>ExecStop=</varname>). If set to <option>mixed</option>, the
+ <constant>SIGTERM</constant> signal (see below) is sent to the main process while the subsequent
+ <constant>SIGKILL</constant> signal (see below) is sent to all remaining processes of the unit's
+ control group. If set to <option>process</option>, only the main process itself is killed (not
+ recommended!). If set to <option>none</option>, no process is killed (strongly recommended
+ against!). In this case, only the stop command will be executed on unit stop, but no process will be
+ killed otherwise. Processes remaining alive after stop are left in their control group and the
+ control group continues to exist after stop unless empty.</para>
+
+ <para>Note that it is not recommended to set <varname>KillMode=</varname> to
+ <constant>process</constant> or even <constant>none</constant>, as this allows processes to escape
+ the service manager's lifecycle and resource management, and to remain running even while their
+ service is considered stopped and is assumed to not consume any resources.</para>
<para>Processes will first be terminated via <constant>SIGTERM</constant> (unless the signal to send
is changed via <varname>KillSignal=</varname> or <varname>RestartKillSignal=</varname>). Optionally,
this is immediately followed by a <constant>SIGHUP</constant> (if enabled with
- <varname>SendSIGHUP=</varname>). If processes still remain after the main process of a unit has
- exited or the delay configured via the <varname>TimeoutStopSec=</varname> has passed, the termination
- request is repeated with the <constant>SIGKILL</constant> signal or the signal specified via
+ <varname>SendSIGHUP=</varname>). If processes still remain after:
+ <itemizedlist>
+ <listitem><para>the main process of a unit has exited (applies to <varname>KillMode=</varname>:
+ <option>mixed</option>)</para></listitem>
+ <listitem><para>the delay configured via the <varname>TimeoutStopSec=</varname> has passed
+ (applies to <varname>KillMode=</varname>: <option>control-group</option>, <option>mixed</option>,
+ <option>process</option>)</para></listitem>
+ </itemizedlist>
+
+ the termination request is repeated with the <constant>SIGKILL</constant> signal or the signal specified via
<varname>FinalKillSignal=</varname> (unless this is disabled via the <varname>SendSIGKILL=</varname>
option). See <citerefentry><refentrytitle>kill</refentrytitle><manvolnum>2</manvolnum></citerefentry>
for more information.</para>
terminate upon receiving the initial <constant>SIGTERM</constant>
signal. This can be achieved by configuring <varname>LimitCORE=</varname>
and setting <varname>FinalKillSignal=</varname> to either
- <constant>SIGQUIT</constant> or <constant>SIGABRT</constant>
+ <constant>SIGQUIT</constant> or <constant>SIGABRT</constant>.
Defaults to <constant>SIGKILL</constant>.
</para></listitem>
</varlistentry>