mirror of
https://github.com/AuxXxilium/eudev.git
synced 2025-01-19 02:28:04 +07:00
exec: drop process group kill mode since it has little use and confuses the user
This commit is contained in:
parent
12235040ec
commit
cd25cce98f
6
TODO
6
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
|
||||
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
||||
|
@ -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
|
||||
|
@ -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>
|
||||
|
||||
|
@ -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>
|
||||
|
||||
|
@ -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"
|
||||
};
|
||||
|
@ -43,7 +43,6 @@ struct CGroupBonding;
|
||||
|
||||
typedef enum KillMode {
|
||||
KILL_CONTROL_GROUP = 0,
|
||||
KILL_PROCESS_GROUP,
|
||||
KILL_PROCESS,
|
||||
KILL_NONE,
|
||||
_KILL_MODE_MAX,
|
||||
|
@ -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) {
|
||||
|
@ -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) {
|
||||
|
@ -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) {
|
||||
|
@ -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) {
|
||||
|
@ -60,7 +60,7 @@ _systemctl () {
|
||||
comps='all control main'
|
||||
;;
|
||||
--kill-mode)
|
||||
comps='control-group process process-group'
|
||||
comps='control-group process'
|
||||
;;
|
||||
--property|-p)
|
||||
comps=''
|
||||
|
@ -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.
|
||||
|
@ -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.
|
||||
|
@ -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.
|
||||
|
@ -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.
|
||||
|
@ -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.
|
||||
|
Loading…
Reference in New Issue
Block a user