summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2011-03-29 23:31:38 +0200
committerLennart Poettering <lennart@poettering.net>2011-03-29 23:31:38 +0200
commitcd25cce98f5cc930202212c3c9c13605c09698b4 (patch)
tree7c186394fed8a04e5ad8fef37eda670282f2a08e
parent12235040ec94279ad92693dcfae0a4d9c35a6076 (diff)
exec: drop process group kill mode since it has little use and confuses the user
-rw-r--r--TODO6
-rw-r--r--man/systemctl.xml8
-rw-r--r--man/systemd.mount.xml1
-rw-r--r--man/systemd.service.xml5
-rw-r--r--man/systemd.socket.xml1
-rw-r--r--man/systemd.swap.xml1
-rw-r--r--src/execute.c1
-rw-r--r--src/execute.h1
-rw-r--r--src/mount.c6
-rw-r--r--src/service.c15
-rw-r--r--src/socket.c6
-rw-r--r--src/swap.c6
-rw-r--r--src/systemctl-bash-completion.sh2
-rw-r--r--units/console-shell.service.m42
-rw-r--r--units/emergency.service2
-rw-r--r--units/getty@.service.m42
-rw-r--r--units/rescue.service.m42
-rw-r--r--units/serial-getty@.service.m42
18 files changed, 20 insertions, 49 deletions
diff --git a/TODO b/TODO
index eeb6c0728f..4302eeefe2 100644
--- a/TODO
+++ b/TODO
@@ -12,8 +12,6 @@ F15:
* hook emergency.target into local-fs.target in some way as OnFailure with isolate
-* drop SIGHUP handling from rsyslog.service upstream (PENDING)
-
* teach dbus to activate all services it finds in /etc/systemd/services/org-*.service
* save/restore tool for SysV as requested by FPC (PENDING)
@@ -27,8 +25,6 @@ F15:
* document default dependencies
-* remove KillMode=process-group
-
* kernel patch wegen kmsg prio nach f15
* LOG_DAEMON/LOG_USER für kmsg messages schreiben
@@ -41,8 +37,6 @@ Features:
* when key file cannot be found, read it from kbd in cryptsetup
-* hide passwords on TAB
-
* get rid of random file name in generator directory?
/run/systemd/generator-IH1vFu
diff --git a/man/systemctl.xml b/man/systemctl.xml
index 535f9bd13b..922fd2d68a 100644
--- a/man/systemctl.xml
+++ b/man/systemctl.xml
@@ -304,13 +304,11 @@
<command>kill</command>, choose the
mode how to kill the selected
processes. Must be one of
- <option>control-group</option>,
- <option>process-group</option> or
+ <option>control-group</option> or
<option>process</option> to select
whether to kill the entire control
- group, the process group or only the
- selected process itself. If omitted
- defaults to
+ group or only the selected process
+ itself. If omitted defaults to
<option>control-group</option> if
<option>--kill-who=all</option> is
set, or <option>process</option>
diff --git a/man/systemd.mount.xml b/man/systemd.mount.xml
index c7045e8422..dd66d2ad72 100644
--- a/man/systemd.mount.xml
+++ b/man/systemd.mount.xml
@@ -221,7 +221,6 @@
processes of this mount shall be
killed. One of
<option>control-group</option>,
- <option>process-group</option>,
<option>process</option>,
<option>none</option>.</para>
diff --git a/man/systemd.service.xml b/man/systemd.service.xml
index e444efeb44..7458720a3f 100644
--- a/man/systemd.service.xml
+++ b/man/systemd.service.xml
@@ -558,7 +558,6 @@
processes of this service shall be
killed. One of
<option>control-group</option>,
- <option>process-group</option>,
<option>process</option>,
<option>none</option>.</para>
@@ -570,10 +569,6 @@
stop command (as configured with
<varname>ExecStop=</varname>) is
executed. If set to
- <option>process-group</option> only
- the members of the process group of
- the main service process are
- killed. If set to
<option>process</option> only the main
process itself is killed. If set to
<option>none</option> no process is
diff --git a/man/systemd.socket.xml b/man/systemd.socket.xml
index 3b7581c545..8cbb512ec1 100644
--- a/man/systemd.socket.xml
+++ b/man/systemd.socket.xml
@@ -519,7 +519,6 @@
processes of this socket unit shall be
killed. One of
<option>control-group</option>,
- <option>process-group</option>,
<option>process</option>,
<option>none</option>.</para>
diff --git a/man/systemd.swap.xml b/man/systemd.swap.xml
index d95e39ed8e..3277ddbd4e 100644
--- a/man/systemd.swap.xml
+++ b/man/systemd.swap.xml
@@ -175,7 +175,6 @@
processes of this swap shall be
killed. One of
<option>control-group</option>,
- <option>process-group</option>,
<option>process</option>,
<option>none</option>.</para>
diff --git a/src/execute.c b/src/execute.c
index a467411f7d..cd44640a53 100644
--- a/src/execute.c
+++ b/src/execute.c
@@ -1933,7 +1933,6 @@ DEFINE_STRING_TABLE_LOOKUP(exec_output, ExecOutput);
static const char* const kill_mode_table[_KILL_MODE_MAX] = {
[KILL_CONTROL_GROUP] = "control-group",
- [KILL_PROCESS_GROUP] = "process-group",
[KILL_PROCESS] = "process",
[KILL_NONE] = "none"
};
diff --git a/src/execute.h b/src/execute.h
index 44856d11fa..208fe4ad5e 100644
--- a/src/execute.h
+++ b/src/execute.h
@@ -43,7 +43,6 @@ struct CGroupBonding;
typedef enum KillMode {
KILL_CONTROL_GROUP = 0,
- KILL_PROCESS_GROUP,
KILL_PROCESS,
KILL_NONE,
_KILL_MODE_MAX,
diff --git a/src/mount.c b/src/mount.c
index cc49b1993f..8528d17a80 100644
--- a/src/mount.c
+++ b/src/mount.c
@@ -747,9 +747,7 @@ static void mount_enter_signal(Mount *m, MountState state, bool success) {
state == MOUNT_REMOUNTING_SIGTERM) ? m->exec_context.kill_signal : SIGKILL;
if (m->control_pid > 0) {
- if (kill_and_sigcont(m->exec_context.kill_mode == KILL_PROCESS_GROUP ?
- -m->control_pid :
- m->control_pid, sig) < 0 && errno != ESRCH)
+ if (kill_and_sigcont(m->control_pid, sig) < 0 && errno != ESRCH)
log_warning("Failed to kill control process %li: %m", (long) m->control_pid);
else
@@ -1684,7 +1682,7 @@ static int mount_kill(Unit *u, KillWho who, KillMode mode, int signo, DBusError
}
if (m->control_pid > 0)
- if (kill(mode == KILL_PROCESS_GROUP ? -m->control_pid : m->control_pid, signo) < 0)
+ if (kill(m->control_pid, signo) < 0)
r = -errno;
if (mode == KILL_CONTROL_GROUP) {
diff --git a/src/service.c b/src/service.c
index 1735a96c80..fd3a9c94e7 100644
--- a/src/service.c
+++ b/src/service.c
@@ -828,7 +828,7 @@ static int service_load_sysv_path(Service *s, const char *path) {
s->exec_context.std_output =
(s->meta.manager->sysv_console || s->exec_context.std_input == EXEC_INPUT_TTY)
? EXEC_OUTPUT_TTY : s->meta.manager->default_std_output;
- s->exec_context.kill_mode = KILL_PROCESS_GROUP;
+ s->exec_context.kill_mode = KILL_PROCESS;
/* We use the long description only if
* no short description is set. */
@@ -1838,19 +1838,14 @@ static void service_enter_signal(Service *s, ServiceState state, bool success) {
int sig = (state == SERVICE_STOP_SIGTERM || state == SERVICE_FINAL_SIGTERM) ? s->exec_context.kill_signal : SIGKILL;
if (s->main_pid > 0) {
- if (kill_and_sigcont(s->exec_context.kill_mode == KILL_PROCESS_GROUP ?
- -s->main_pid :
- s->main_pid, sig) < 0 && errno != ESRCH)
-
+ if (kill_and_sigcont(s->main_pid, sig) < 0 && errno != ESRCH)
log_warning("Failed to kill main process %li: %m", (long) s->main_pid);
else
wait_for_exit = true;
}
if (s->control_pid > 0) {
- if (kill_and_sigcont(s->exec_context.kill_mode == KILL_PROCESS_GROUP ?
- -s->control_pid :
- s->control_pid, sig) < 0 && errno != ESRCH)
+ if (kill_and_sigcont(s->control_pid, sig) < 0 && errno != ESRCH)
log_warning("Failed to kill control process %li: %m", (long) s->control_pid);
else
@@ -3212,11 +3207,11 @@ static int service_kill(Unit *u, KillWho who, KillMode mode, int signo, DBusErro
}
if (s->control_pid > 0)
- if (kill(mode == KILL_PROCESS_GROUP ? -s->control_pid : s->control_pid, signo) < 0)
+ if (kill(s->control_pid, signo) < 0)
r = -errno;
if (s->main_pid > 0)
- if (kill(mode == KILL_PROCESS_GROUP ? -s->main_pid : s->main_pid, signo) < 0)
+ if (kill(s->main_pid, signo) < 0)
r = -errno;
if (mode == KILL_CONTROL_GROUP) {
diff --git a/src/socket.c b/src/socket.c
index 9045a2fc85..72be0e2235 100644
--- a/src/socket.c
+++ b/src/socket.c
@@ -1040,9 +1040,7 @@ static void socket_enter_signal(Socket *s, SocketState state, bool success) {
int sig = (state == SOCKET_STOP_PRE_SIGTERM || state == SOCKET_FINAL_SIGTERM) ? s->exec_context.kill_signal : SIGKILL;
if (s->control_pid > 0) {
- if (kill_and_sigcont(s->exec_context.kill_mode == KILL_PROCESS_GROUP ?
- -s->control_pid :
- s->control_pid, sig) < 0 && errno != ESRCH)
+ if (kill_and_sigcont(s->control_pid, sig) < 0 && errno != ESRCH)
log_warning("Failed to kill control process %li: %m", (long) s->control_pid);
else
@@ -1837,7 +1835,7 @@ static int socket_kill(Unit *u, KillWho who, KillMode mode, int signo, DBusError
}
if (s->control_pid > 0)
- if (kill(mode == KILL_PROCESS_GROUP ? -s->control_pid : s->control_pid, signo) < 0)
+ if (kill(s->control_pid, signo) < 0)
r = -errno;
if (mode == KILL_CONTROL_GROUP) {
diff --git a/src/swap.c b/src/swap.c
index 035efbaf4b..66bf5c2bfb 100644
--- a/src/swap.c
+++ b/src/swap.c
@@ -661,9 +661,7 @@ static void swap_enter_signal(Swap *s, SwapState state, bool success) {
state == SWAP_DEACTIVATING_SIGTERM) ? s->exec_context.kill_signal : SIGKILL;
if (s->control_pid > 0) {
- if (kill_and_sigcont(s->exec_context.kill_mode == KILL_PROCESS_GROUP ?
- -s->control_pid :
- s->control_pid, sig) < 0 && errno != ESRCH)
+ if (kill_and_sigcont(s->control_pid, sig) < 0 && errno != ESRCH)
log_warning("Failed to kill control process %li: %m", (long) s->control_pid);
else
@@ -1286,7 +1284,7 @@ static int swap_kill(Unit *u, KillWho who, KillMode mode, int signo, DBusError *
}
if (s->control_pid > 0)
- if (kill(mode == KILL_PROCESS_GROUP ? -s->control_pid : s->control_pid, signo) < 0)
+ if (kill(s->control_pid, signo) < 0)
r = -errno;
if (mode == KILL_CONTROL_GROUP) {
diff --git a/src/systemctl-bash-completion.sh b/src/systemctl-bash-completion.sh
index f3420217b5..ae0ecb7b70 100644
--- a/src/systemctl-bash-completion.sh
+++ b/src/systemctl-bash-completion.sh
@@ -60,7 +60,7 @@ _systemctl () {
comps='all control main'
;;
--kill-mode)
- comps='control-group process process-group'
+ comps='control-group process'
;;
--property|-p)
comps=''
diff --git a/units/console-shell.service.m4 b/units/console-shell.service.m4
index c98a08fccc..cce2d5a5a4 100644
--- a/units/console-shell.service.m4
+++ b/units/console-shell.service.m4
@@ -31,7 +31,7 @@ WorkingDirectory=/root
ExecStart=-/sbin/sulogin
ExecStopPost=-/bin/systemctl poweroff
StandardInput=tty-force
-KillMode=process-group
+KillMode=process
# Bash ignores SIGTERM, so we send SIGHUP instead, to ensure that bash
# terminates cleanly.
diff --git a/units/emergency.service b/units/emergency.service
index cb28a78385..a97ec5e389 100644
--- a/units/emergency.service
+++ b/units/emergency.service
@@ -21,7 +21,7 @@ ExecStartPre=-/bin/echo 'Welcome to emergency mode. Use "systemctl default" or ^
ExecStart=-/sbin/sulogin
ExecStopPost=/bin/systemctl --fail default
StandardInput=tty-force
-KillMode=process-group
+KillMode=process
# Bash ignores SIGTERM, so we send SIGHUP instead, to ensure that bash
# terminates cleanly.
diff --git a/units/getty@.service.m4 b/units/getty@.service.m4
index 1a8a6a0e9c..a9733a60d6 100644
--- a/units/getty@.service.m4
+++ b/units/getty@.service.m4
@@ -36,7 +36,7 @@ ExecStart=-/sbin/agetty %I 38400
Restart=always
RestartSec=0
UtmpIdentifier=%I
-KillMode=process-group
+KillMode=process
# Unset locale for the console getty since the console has problems
# displaying some internationalized messages.
diff --git a/units/rescue.service.m4 b/units/rescue.service.m4
index 969ac4728f..241c75071f 100644
--- a/units/rescue.service.m4
+++ b/units/rescue.service.m4
@@ -28,7 +28,7 @@ ExecStart=-/bin/bash -c "exec ${SINGLE}"',
`ExecStart=-/sbin/sulogin'))
ExecStopPost=-/bin/systemctl --fail default
StandardInput=tty-force
-KillMode=process-group
+KillMode=process
# Bash ignores SIGTERM, so we send SIGHUP instead, to ensure that bash
# terminates cleanly.
diff --git a/units/serial-getty@.service.m4 b/units/serial-getty@.service.m4
index d42330a1ad..8b4f0fb9d5 100644
--- a/units/serial-getty@.service.m4
+++ b/units/serial-getty@.service.m4
@@ -36,7 +36,7 @@ ExecStart=-/sbin/agetty -s %I 115200,38400,9600
Restart=always
RestartSec=0
UtmpIdentifier=%I
-KillMode=process-group
+KillMode=process
# Some login implementations ignore SIGTERM, so we send SIGHUP
# instead, to ensure that login terminates cleanly.