Commit cd25cce9 authored by Lennart Poettering's avatar Lennart Poettering

exec: drop process group kill mode since it has little use and confuses the user

parent 12235040
...@@ -12,8 +12,6 @@ F15: ...@@ -12,8 +12,6 @@ F15:
* hook emergency.target into local-fs.target in some way as OnFailure with isolate * 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 * teach dbus to activate all services it finds in /etc/systemd/services/org-*.service
* save/restore tool for SysV as requested by FPC (PENDING) * save/restore tool for SysV as requested by FPC (PENDING)
...@@ -27,8 +25,6 @@ F15: ...@@ -27,8 +25,6 @@ F15:
* document default dependencies * document default dependencies
* remove KillMode=process-group
* kernel patch wegen kmsg prio nach f15 * kernel patch wegen kmsg prio nach f15
* LOG_DAEMON/LOG_USER für kmsg messages schreiben * LOG_DAEMON/LOG_USER für kmsg messages schreiben
...@@ -41,8 +37,6 @@ Features: ...@@ -41,8 +37,6 @@ Features:
* when key file cannot be found, read it from kbd in cryptsetup * 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? * get rid of random file name in generator directory?
/run/systemd/generator-IH1vFu /run/systemd/generator-IH1vFu
......
...@@ -304,13 +304,11 @@ ...@@ -304,13 +304,11 @@
<command>kill</command>, choose the <command>kill</command>, choose the
mode how to kill the selected mode how to kill the selected
processes. Must be one of processes. Must be one of
<option>control-group</option>, <option>control-group</option> or
<option>process-group</option> or
<option>process</option> to select <option>process</option> to select
whether to kill the entire control whether to kill the entire control
group, the process group or only the group or only the selected process
selected process itself. If omitted itself. If omitted defaults to
defaults to
<option>control-group</option> if <option>control-group</option> if
<option>--kill-who=all</option> is <option>--kill-who=all</option> is
set, or <option>process</option> set, or <option>process</option>
......
...@@ -221,7 +221,6 @@ ...@@ -221,7 +221,6 @@
processes of this mount shall be processes of this mount shall be
killed. One of killed. One of
<option>control-group</option>, <option>control-group</option>,
<option>process-group</option>,
<option>process</option>, <option>process</option>,
<option>none</option>.</para> <option>none</option>.</para>
......
...@@ -558,7 +558,6 @@ ...@@ -558,7 +558,6 @@
processes of this service shall be processes of this service shall be
killed. One of killed. One of
<option>control-group</option>, <option>control-group</option>,
<option>process-group</option>,
<option>process</option>, <option>process</option>,
<option>none</option>.</para> <option>none</option>.</para>
...@@ -570,10 +569,6 @@ ...@@ -570,10 +569,6 @@
stop command (as configured with stop command (as configured with
<varname>ExecStop=</varname>) is <varname>ExecStop=</varname>) is
executed. If set to 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 <option>process</option> only the main
process itself is killed. If set to process itself is killed. If set to
<option>none</option> no process is <option>none</option> no process is
......
...@@ -519,7 +519,6 @@ ...@@ -519,7 +519,6 @@
processes of this socket unit shall be processes of this socket unit shall be
killed. One of killed. One of
<option>control-group</option>, <option>control-group</option>,
<option>process-group</option>,
<option>process</option>, <option>process</option>,
<option>none</option>.</para> <option>none</option>.</para>
......
...@@ -175,7 +175,6 @@ ...@@ -175,7 +175,6 @@
processes of this swap shall be processes of this swap shall be
killed. One of killed. One of
<option>control-group</option>, <option>control-group</option>,
<option>process-group</option>,
<option>process</option>, <option>process</option>,
<option>none</option>.</para> <option>none</option>.</para>
......
...@@ -1933,7 +1933,6 @@ DEFINE_STRING_TABLE_LOOKUP(exec_output, ExecOutput); ...@@ -1933,7 +1933,6 @@ DEFINE_STRING_TABLE_LOOKUP(exec_output, ExecOutput);
static const char* const kill_mode_table[_KILL_MODE_MAX] = { static const char* const kill_mode_table[_KILL_MODE_MAX] = {
[KILL_CONTROL_GROUP] = "control-group", [KILL_CONTROL_GROUP] = "control-group",
[KILL_PROCESS_GROUP] = "process-group",
[KILL_PROCESS] = "process", [KILL_PROCESS] = "process",
[KILL_NONE] = "none" [KILL_NONE] = "none"
}; };
......
...@@ -43,7 +43,6 @@ struct CGroupBonding; ...@@ -43,7 +43,6 @@ struct CGroupBonding;
typedef enum KillMode { typedef enum KillMode {
KILL_CONTROL_GROUP = 0, KILL_CONTROL_GROUP = 0,
KILL_PROCESS_GROUP,
KILL_PROCESS, KILL_PROCESS,
KILL_NONE, KILL_NONE,
_KILL_MODE_MAX, _KILL_MODE_MAX,
......
...@@ -747,9 +747,7 @@ static void mount_enter_signal(Mount *m, MountState state, bool success) { ...@@ -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; state == MOUNT_REMOUNTING_SIGTERM) ? m->exec_context.kill_signal : SIGKILL;
if (m->control_pid > 0) { if (m->control_pid > 0) {
if (kill_and_sigcont(m->exec_context.kill_mode == KILL_PROCESS_GROUP ? if (kill_and_sigcont(m->control_pid, sig) < 0 && errno != ESRCH)
-m->control_pid :
m->control_pid, sig) < 0 && errno != ESRCH)
log_warning("Failed to kill control process %li: %m", (long) m->control_pid); log_warning("Failed to kill control process %li: %m", (long) m->control_pid);
else else
...@@ -1684,7 +1682,7 @@ static int mount_kill(Unit *u, KillWho who, KillMode mode, int signo, DBusError ...@@ -1684,7 +1682,7 @@ static int mount_kill(Unit *u, KillWho who, KillMode mode, int signo, DBusError
} }
if (m->control_pid > 0) 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; r = -errno;
if (mode == KILL_CONTROL_GROUP) { if (mode == KILL_CONTROL_GROUP) {
......
...@@ -828,7 +828,7 @@ static int service_load_sysv_path(Service *s, const char *path) { ...@@ -828,7 +828,7 @@ static int service_load_sysv_path(Service *s, const char *path) {
s->exec_context.std_output = s->exec_context.std_output =
(s->meta.manager->sysv_console || s->exec_context.std_input == EXEC_INPUT_TTY) (s->meta.manager->sysv_console || s->exec_context.std_input == EXEC_INPUT_TTY)
? EXEC_OUTPUT_TTY : s->meta.manager->default_std_output; ? 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 /* We use the long description only if
* no short description is set. */ * no short description is set. */
...@@ -1838,19 +1838,14 @@ static void service_enter_signal(Service *s, ServiceState state, bool success) { ...@@ -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; int sig = (state == SERVICE_STOP_SIGTERM || state == SERVICE_FINAL_SIGTERM) ? s->exec_context.kill_signal : SIGKILL;
if (s->main_pid > 0) { if (s->main_pid > 0) {
if (kill_and_sigcont(s->exec_context.kill_mode == KILL_PROCESS_GROUP ? if (kill_and_sigcont(s->main_pid, sig) < 0 && errno != ESRCH)
-s->main_pid :
s->main_pid, sig) < 0 && errno != ESRCH)
log_warning("Failed to kill main process %li: %m", (long) s->main_pid); log_warning("Failed to kill main process %li: %m", (long) s->main_pid);
else else
wait_for_exit = true; wait_for_exit = true;
} }
if (s->control_pid > 0) { if (s->control_pid > 0) {
if (kill_and_sigcont(s->exec_context.kill_mode == KILL_PROCESS_GROUP ? if (kill_and_sigcont(s->control_pid, sig) < 0 && errno != ESRCH)
-s->control_pid :
s->control_pid, sig) < 0 && errno != ESRCH)
log_warning("Failed to kill control process %li: %m", (long) s->control_pid); log_warning("Failed to kill control process %li: %m", (long) s->control_pid);
else else
...@@ -3212,11 +3207,11 @@ static int service_kill(Unit *u, KillWho who, KillMode mode, int signo, DBusErro ...@@ -3212,11 +3207,11 @@ static int service_kill(Unit *u, KillWho who, KillMode mode, int signo, DBusErro
} }
if (s->control_pid > 0) 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; r = -errno;
if (s->main_pid > 0) 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; r = -errno;
if (mode == KILL_CONTROL_GROUP) { if (mode == KILL_CONTROL_GROUP) {
......
...@@ -1040,9 +1040,7 @@ static void socket_enter_signal(Socket *s, SocketState state, bool success) { ...@@ -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; int sig = (state == SOCKET_STOP_PRE_SIGTERM || state == SOCKET_FINAL_SIGTERM) ? s->exec_context.kill_signal : SIGKILL;
if (s->control_pid > 0) { if (s->control_pid > 0) {
if (kill_and_sigcont(s->exec_context.kill_mode == KILL_PROCESS_GROUP ? if (kill_and_sigcont(s->control_pid, sig) < 0 && errno != ESRCH)
-s->control_pid :
s->control_pid, sig) < 0 && errno != ESRCH)
log_warning("Failed to kill control process %li: %m", (long) s->control_pid); log_warning("Failed to kill control process %li: %m", (long) s->control_pid);
else else
...@@ -1837,7 +1835,7 @@ static int socket_kill(Unit *u, KillWho who, KillMode mode, int signo, DBusError ...@@ -1837,7 +1835,7 @@ static int socket_kill(Unit *u, KillWho who, KillMode mode, int signo, DBusError
} }
if (s->control_pid > 0) 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; r = -errno;
if (mode == KILL_CONTROL_GROUP) { if (mode == KILL_CONTROL_GROUP) {
......
...@@ -661,9 +661,7 @@ static void swap_enter_signal(Swap *s, SwapState state, bool success) { ...@@ -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; state == SWAP_DEACTIVATING_SIGTERM) ? s->exec_context.kill_signal : SIGKILL;
if (s->control_pid > 0) { if (s->control_pid > 0) {
if (kill_and_sigcont(s->exec_context.kill_mode == KILL_PROCESS_GROUP ? if (kill_and_sigcont(s->control_pid, sig) < 0 && errno != ESRCH)
-s->control_pid :
s->control_pid, sig) < 0 && errno != ESRCH)
log_warning("Failed to kill control process %li: %m", (long) s->control_pid); log_warning("Failed to kill control process %li: %m", (long) s->control_pid);
else else
...@@ -1286,7 +1284,7 @@ static int swap_kill(Unit *u, KillWho who, KillMode mode, int signo, DBusError * ...@@ -1286,7 +1284,7 @@ static int swap_kill(Unit *u, KillWho who, KillMode mode, int signo, DBusError *
} }
if (s->control_pid > 0) 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; r = -errno;
if (mode == KILL_CONTROL_GROUP) { if (mode == KILL_CONTROL_GROUP) {
......
...@@ -60,7 +60,7 @@ _systemctl () { ...@@ -60,7 +60,7 @@ _systemctl () {
comps='all control main' comps='all control main'
;; ;;
--kill-mode) --kill-mode)
comps='control-group process process-group' comps='control-group process'
;; ;;
--property|-p) --property|-p)
comps='' comps=''
......
...@@ -31,7 +31,7 @@ WorkingDirectory=/root ...@@ -31,7 +31,7 @@ WorkingDirectory=/root
ExecStart=-/sbin/sulogin ExecStart=-/sbin/sulogin
ExecStopPost=-/bin/systemctl poweroff ExecStopPost=-/bin/systemctl poweroff
StandardInput=tty-force StandardInput=tty-force
KillMode=process-group KillMode=process
# Bash ignores SIGTERM, so we send SIGHUP instead, to ensure that bash # Bash ignores SIGTERM, so we send SIGHUP instead, to ensure that bash
# terminates cleanly. # terminates cleanly.
......
...@@ -21,7 +21,7 @@ ExecStartPre=-/bin/echo 'Welcome to emergency mode. Use "systemctl default" or ^ ...@@ -21,7 +21,7 @@ ExecStartPre=-/bin/echo 'Welcome to emergency mode. Use "systemctl default" or ^
ExecStart=-/sbin/sulogin ExecStart=-/sbin/sulogin
ExecStopPost=/bin/systemctl --fail default ExecStopPost=/bin/systemctl --fail default
StandardInput=tty-force StandardInput=tty-force
KillMode=process-group KillMode=process
# Bash ignores SIGTERM, so we send SIGHUP instead, to ensure that bash # Bash ignores SIGTERM, so we send SIGHUP instead, to ensure that bash
# terminates cleanly. # terminates cleanly.
......
...@@ -36,7 +36,7 @@ ExecStart=-/sbin/agetty %I 38400 ...@@ -36,7 +36,7 @@ ExecStart=-/sbin/agetty %I 38400
Restart=always Restart=always
RestartSec=0 RestartSec=0
UtmpIdentifier=%I UtmpIdentifier=%I
KillMode=process-group KillMode=process
# Unset locale for the console getty since the console has problems # Unset locale for the console getty since the console has problems
# displaying some internationalized messages. # displaying some internationalized messages.
......
...@@ -28,7 +28,7 @@ ExecStart=-/bin/bash -c "exec ${SINGLE}"', ...@@ -28,7 +28,7 @@ ExecStart=-/bin/bash -c "exec ${SINGLE}"',
`ExecStart=-/sbin/sulogin')) `ExecStart=-/sbin/sulogin'))
ExecStopPost=-/bin/systemctl --fail default ExecStopPost=-/bin/systemctl --fail default
StandardInput=tty-force StandardInput=tty-force
KillMode=process-group KillMode=process
# Bash ignores SIGTERM, so we send SIGHUP instead, to ensure that bash # Bash ignores SIGTERM, so we send SIGHUP instead, to ensure that bash
# terminates cleanly. # terminates cleanly.
......
...@@ -36,7 +36,7 @@ ExecStart=-/sbin/agetty -s %I 115200,38400,9600 ...@@ -36,7 +36,7 @@ ExecStart=-/sbin/agetty -s %I 115200,38400,9600
Restart=always Restart=always
RestartSec=0 RestartSec=0
UtmpIdentifier=%I UtmpIdentifier=%I
KillMode=process-group KillMode=process
# Some login implementations ignore SIGTERM, so we send SIGHUP # Some login implementations ignore SIGTERM, so we send SIGHUP
# instead, to ensure that login terminates cleanly. # instead, to ensure that login terminates cleanly.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment