From 113eddd9c3e7e0cc2b68627864e7d85a9542265d Mon Sep 17 00:00:00 2001 From: Bill Nottingham Date: Mon, 28 Feb 2011 16:31:09 -0500 Subject: Make killproc more granular when delay is passed. (#428029, ) --- rc.d/init.d/functions | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) (limited to 'rc.d/init.d/functions') diff --git a/rc.d/init.d/functions b/rc.d/init.d/functions index fc5914c5..10a108a9 100644 --- a/rc.d/init.d/functions +++ b/rc.d/init.d/functions @@ -269,7 +269,7 @@ daemon() { # A function to stop a program. killproc() { - local RC killlevel= base pid pid_file= delay + local RC killlevel= base pid pid_file= delay try RC=0; delay=3 # Test syntax. @@ -312,11 +312,17 @@ killproc() { # TERM first, then KILL if not dead kill -TERM $pid >/dev/null 2>&1 usleep 100000 - if checkpid $pid && sleep 1 && - checkpid $pid && sleep $delay && - checkpid $pid ; then - kill -KILL $pid >/dev/null 2>&1 - usleep 100000 + if checkpid $pid ; then + try=0 + while [ $try -lt $delay ] ; do + checkpid $pid || break + sleep 1 + let try+=1 + done + if checkpid $pid ; then + kill -KILL $pid >/dev/null 2>&1 + usleep 100000 + fi fi fi checkpid $pid -- cgit v1.2.1