From 9e33f349d489f24da7e1c93e85d826df8ad9ae5b Mon Sep 17 00:00:00 2001
From: Lennart Poettering <lennart@poettering.net>
Date: Tue, 25 Mar 2014 00:51:22 +0100
Subject: [PATCH] systemctl: add more verbose explanation of --kill-who and
what control/main processes are
(cherry picked from commit af7424af70d063412c09b0125f4d4a39865210dc)
(cherry picked from commit e28c1308c99a4172d99304d927d675e29d0b7fa5)
---
man/systemctl.xml | 35 ++++++++++++++++++++++++++++++-----
1 file changed, 30 insertions(+), 5 deletions(-)
diff --git a/man/systemctl.xml b/man/systemctl.xml
index 816586c..6492b0e 100644
--- a/man/systemctl.xml
+++ b/man/systemctl.xml
@@ -389,11 +389,36 @@ systemctl start foo
<listitem>
<para>When used with <command>kill</command>, choose which
- processes to kill. Must be one of <option>main</option>,
- <option>control</option> or <option>all</option> to select
- whether to kill only the main process of the unit, the
- control process or all processes of the unit. If omitted,
- defaults to <option>all</option>.</para>
+ processes to send a signal to. Must be one of
+ <option>main</option>, <option>control</option> or
+ <option>all</option> to select whether to kill only the main
+ process, the control process or all processes of the
+ unit. The main process of the unit is the one that defines
+ the life-time of it. A control process of a unit is one that
+ is invoked by the manager to induce state changes of it. For
+ example, all processes started due to the
+ <varname>ExecStartPre=</varname>,
+ <varname>ExecStop=</varname> or
+ <varname>ExecReload=</varname> settings of service units are
+ control processes. Note that there is only one control
+ process per unit at a time, as only one state change is
+ executed at a time. For services of type
+ <varname>Type=forking</varname> the initial process started
+ by the manager for <varname>ExecStart=</varname> is a
+ control process, while the process ultimately forked off by
+ that one is then considered the main process of the unit (if
+ it can be determined). This is different for service units
+ of other types, where the process forked off by the manager
+ for <varname>ExecStart=</varname> is always the main process
+ itself. A service unit consists of no or one main process,
+ no or one control process plus any number of additional
+ processes. Not all unit types manage processes of these
+ types however. For example for mount units control processes
+ are defined (which are the invocations of
+ <filename>/usr/bin/mount</filename> and
+ <filename>/usr/bin/umount</filename>), but no main process
+ is defined. If omitted, defaults to
+ <option>all</option>.</para>
</listitem>
</varlistentry>