.
OBS-URL: https://build.opensuse.org/package/show/Base:System/sysvinit?expand=0&rev=61
This commit is contained in:
parent
ae84e6d151
commit
8af8b9b968
@ -57,23 +57,66 @@
|
|||||||
exit(LSB_STATUS_PROOFX);
|
exit(LSB_STATUS_PROOFX);
|
||||||
}
|
}
|
||||||
--- killproc.8
|
--- killproc.8
|
||||||
+++ killproc.8 2010-04-12 15:49:09.610924538 +0000
|
+++ killproc.8 2010-07-20 09:30:00.775424897 +0000
|
||||||
@@ -57,9 +57,11 @@ is sent. If this program is not called w
|
@@ -57,9 +57,11 @@ is sent. If this program is not called w
|
||||||
.B killproc
|
.B killproc
|
||||||
then
|
then
|
||||||
.B SIGHUP
|
.B SIGHUP
|
||||||
-is used. Note that if
|
-is used. Note that if
|
||||||
+is used. Note that if no signal is specified and the program
|
+is used. Note that if no signal is specified on the command line and the program
|
||||||
+.B killproc
|
+.B killproc
|
||||||
+does not terminate a process with the default
|
+can not terminate a process with the default
|
||||||
.B SIGTERM
|
.B SIGTERM
|
||||||
-is used and does not terminate a process the signal
|
-is used and does not terminate a process the signal
|
||||||
+the signal
|
+the signal
|
||||||
.B SIGKILL
|
.B SIGKILL
|
||||||
is send after a few seconds (default is 5 seconds, see option
|
is send after a few seconds (default is 5 seconds, see option
|
||||||
.BR \-t ).
|
.BR \-t ).
|
||||||
|
@@ -240,16 +242,21 @@ or by number
|
||||||
|
.B \-t\fI<sec>\fP
|
||||||
|
The number
|
||||||
|
.I <sec>
|
||||||
|
-specifies the seconds to wait between the sent signal
|
||||||
|
+specifies the seconds to wait between the default signal
|
||||||
|
.B SIGTERM
|
||||||
|
and the subsequentially signal
|
||||||
|
.B SIGKILL
|
||||||
|
if the first
|
||||||
|
.B SIGTERM
|
||||||
|
does not show any result within the
|
||||||
|
-first few milli seconds. This defaults to
|
||||||
|
+first few milli seconds. This timeout defaults to
|
||||||
|
.B 5
|
||||||
|
-seconds.
|
||||||
|
+seconds. On the other hand if the signal
|
||||||
|
+.B SIGTERM
|
||||||
|
+was explicitly used on the command line, the signal
|
||||||
|
+.B SIGKILL
|
||||||
|
+will be omitted, even if the process was not terminated
|
||||||
|
+after the timeout has expired.
|
||||||
|
.TP
|
||||||
|
.B \-q
|
||||||
|
This option is ignored.
|
||||||
|
@@ -278,7 +285,7 @@ then the pid from this file is being use
|
||||||
|
terminate the sendmail process. Other running processes are
|
||||||
|
ignored.
|
||||||
|
.TP
|
||||||
|
-.B killproc -p /var/myrun/lpd.pid -TERM /usr/sbin/lpd
|
||||||
|
+.B killproc -p /var/myrun/lpd.pid /usr/sbin/lpd
|
||||||
|
.IP
|
||||||
|
sends the signal
|
||||||
|
.B SIGTERM
|
||||||
|
@@ -293,7 +300,7 @@ does not exist,
|
||||||
|
assumes that the daemon of
|
||||||
|
.B /usr/sbin/lpd
|
||||||
|
is not running. The exit status
|
||||||
|
-is set to 0 for successfully delivering the given signals
|
||||||
|
+is set to 0 for successfully delivering the default signals
|
||||||
|
.BR SIGTERM " and " SIGKILL
|
||||||
|
otherwise to 7 if the program was not running. It is also
|
||||||
|
successful if
|
||||||
--- killproc.c
|
--- killproc.c
|
||||||
+++ killproc.c 2010-04-12 15:43:46.802925071 +0000
|
+++ killproc.c 2010-07-20 09:35:09.234925068 +0000
|
||||||
@@ -48,6 +48,7 @@ int main(int argc, char **argv)
|
@@ -48,6 +48,7 @@ int main(int argc, char **argv)
|
||||||
int process_group = 0, group_leader = 0, wait = 5, iargc = 0;
|
int process_group = 0, group_leader = 0, wait = 5, iargc = 0;
|
||||||
unsigned short flags = (KILL|PIDOF|KSTOP);
|
unsigned short flags = (KILL|PIDOF|KSTOP);
|
||||||
@ -139,15 +182,18 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (pid_file) { /* The case of having a pid file */
|
if (pid_file) { /* The case of having a pid file */
|
||||||
@@ -269,7 +277,7 @@ int main(int argc, char **argv)
|
@@ -291,7 +299,10 @@ again:
|
||||||
for(list = remember; list; list = list->next)
|
goto again;
|
||||||
do_kill(basename, list->pid, snum, group_leader, process_group);
|
}
|
||||||
|
|
||||||
- if (snum == SIGTERM || snum == SIGKILL) {
|
- if (snum == SIGKILL)
|
||||||
+ if ((sig_forced && snum == SIGTERM) || snum == SIGKILL) {
|
+ if (snum == SIGKILL) /* SIGKILL was specified on the command line */
|
||||||
int partsec = 5*wait; /* We look 5 times within a second */
|
+ goto badterm;
|
||||||
/*
|
+
|
||||||
* Does anybody have a better idea ... something with sigaction()/signal()
|
+ if (!sig_forced) /* SIGTERM was specified on the command line */
|
||||||
|
goto badterm;
|
||||||
|
|
||||||
|
if (check_pids(fullname,root,flags) < 0)
|
||||||
--- libinit.c
|
--- libinit.c
|
||||||
+++ libinit.c 2009-10-28 09:47:13.711429753 +0000
|
+++ libinit.c 2009-10-28 09:47:13.711429753 +0000
|
||||||
@@ -320,13 +320,15 @@ static ssize_t xread(int fd, void *inbuf
|
@@ -320,13 +320,15 @@ static ssize_t xread(int fd, void *inbuf
|
||||||
|
@ -1,3 +1,11 @@
|
|||||||
|
-------------------------------------------------------------------
|
||||||
|
Tue Jul 20 11:43:58 CEST 2010 - werner@suse.de
|
||||||
|
|
||||||
|
- Enforce killproc to wait even if the SIGTERM has been specified
|
||||||
|
on the command line. This should avoid the in most cases that
|
||||||
|
the daemon has not finished its response on SIGTERM, see bug
|
||||||
|
bnc#623460 and bug bnc#595796.
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Fri Jul 16 17:22:27 CEST 2010 - werner@suse.de
|
Fri Jul 16 17:22:27 CEST 2010 - werner@suse.de
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user