checked in (request 43483)
OBS-URL: https://build.opensuse.org/package/show/Base:System/sysvinit?expand=0&rev=62
This commit is contained in:
parent
8af8b9b968
commit
4baa8a18c1
@ -57,66 +57,23 @@
|
|||||||
exit(LSB_STATUS_PROOFX);
|
exit(LSB_STATUS_PROOFX);
|
||||||
}
|
}
|
||||||
--- killproc.8
|
--- killproc.8
|
||||||
+++ killproc.8 2010-07-20 09:30:00.775424897 +0000
|
+++ killproc.8 2010-04-12 15:49:09.610924538 +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 on the command line and the program
|
+is used. Note that if no signal is specified and the program
|
||||||
+.B killproc
|
+.B killproc
|
||||||
+can not terminate a process with the default
|
+does 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-07-20 09:35:09.234925068 +0000
|
+++ killproc.c 2010-04-12 15:43:46.802925071 +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);
|
||||||
@ -182,18 +139,15 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (pid_file) { /* The case of having a pid file */
|
if (pid_file) { /* The case of having a pid file */
|
||||||
@@ -291,7 +299,10 @@ again:
|
@@ -269,7 +277,7 @@ int main(int argc, char **argv)
|
||||||
goto again;
|
for(list = remember; list; list = list->next)
|
||||||
}
|
do_kill(basename, list->pid, snum, group_leader, process_group);
|
||||||
|
|
||||||
- if (snum == SIGKILL)
|
- if (snum == SIGTERM || snum == SIGKILL) {
|
||||||
+ if (snum == SIGKILL) /* SIGKILL was specified on the command line */
|
+ if ((sig_forced && snum == SIGTERM) || snum == SIGKILL) {
|
||||||
+ goto badterm;
|
int partsec = 5*wait; /* We look 5 times within a second */
|
||||||
+
|
/*
|
||||||
+ if (!sig_forced) /* SIGTERM was specified on the command line */
|
* Does anybody have a better idea ... something with sigaction()/signal()
|
||||||
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,11 +1,3 @@
|
|||||||
-------------------------------------------------------------------
|
|
||||||
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