aboutsummaryrefslogtreecommitdiffstats
path: root/rc.d/init.d/functions
diff options
context:
space:
mode:
Diffstat (limited to 'rc.d/init.d/functions')
-rw-r--r--rc.d/init.d/functions26
1 files changed, 8 insertions, 18 deletions
diff --git a/rc.d/init.d/functions b/rc.d/init.d/functions
index ce6df4c7..f1fff775 100644
--- a/rc.d/init.d/functions
+++ b/rc.d/init.d/functions
@@ -269,9 +269,9 @@ daemon() {
# A function to stop a program.
killproc() {
- local RC killlevel= base pid pid_file= delay try
+ local RC killlevel= base pid pid_file= delay
- RC=0; delay=3; try=0
+ RC=0; delay=3
# Test syntax.
if [ "$#" -eq 0 ]; then
echo $"Usage: killproc [-p pidfile] [ -d delay] {program} [-signal]"
@@ -282,11 +282,7 @@ killproc() {
shift 2
fi
if [ "$1" = "-d" ]; then
- delay=$(echo $2 | awk -v RS=' ' -v IGNORECASE=1 '{if($1!~/^[0-9.]+[smhd]?$/) exit 1;d=$1~/s$|^[0-9.]*$/?1:$1~/m$/?60:$1~/h$/?60*60:$1~/d$/?24*60*60:-1;if(d==-1) exit 1;delay+=d*$1} END {printf("%d",delay+0.5)}')
- if [ "$?" -eq 1 ]; then
- echo $"Usage: killproc [-p pidfile] [ -d delay] {program} [-signal]"
- return 1
- fi
+ delay=$2
shift 2
fi
@@ -316,17 +312,11 @@ killproc() {
# TERM first, then KILL if not dead
kill -TERM $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
+ if checkpid $pid && sleep 1 &&
+ checkpid $pid && sleep $delay &&
+ checkpid $pid ; then
+ kill -KILL $pid >/dev/null 2>&1
+ usleep 100000
fi
fi
checkpid $pid