Make final kill signal configurable

Usecase is to allow changing the final kill from SIGKILL to SIGQUIT which
should create a core dump useful for debugging why the service didn't stop
with the SIGTERM
This commit is contained in:
Jon Ringle
2018-07-23 13:44:54 +02:00
committed by Lennart Poettering
parent 2484bff32b
commit fbb48d4c66
11 changed files with 42 additions and 11 deletions
+23 -4
View File
@@ -94,7 +94,8 @@
enabled with <varname>SendSIGHUP=</varname>). If then, after a
delay (configured via the <varname>TimeoutStopSec=</varname>
option), processes still remain, the termination request is
repeated with the <constant>SIGKILL</constant> signal (unless
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>
@@ -135,9 +136,27 @@
<varlistentry>
<term><varname>SendSIGKILL=</varname></term>
<listitem><para>Specifies whether to send
<constant>SIGKILL</constant> to remaining processes after a
timeout, if the normal shutdown procedure left processes of
the service around. Takes a boolean value. Defaults to "yes".
<constant>SIGKILL</constant> (or the signal specified by
<varname>FinalKillSignal=</varname>) to remaining processes
after a timeout, if the normal shutdown procedure left
processes of the service around. Takes a boolean value.
Defaults to "yes".
</para></listitem>
</varlistentry>
<varlistentry>
<term><varname>FinalKillSignal=</varname></term>
<listitem><para>Specifies which signal to send to remaining
processes after a timeout if <varname>SendSIGKILL=</varname>
is enabled. The signal configured here should be one that is
not typically caught and processed by services (<constant>SIGTERM</constant>
is not suitable). Developers can find it useful to use this to
generate a coredump to troubleshoot why a service did not
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>
Defaults to <constant>SIGKILL</constant>.
</para></listitem>
</varlistentry>