mir3c/squashfs-root/usr/sbin/killpidfile

47 lines
667 B
Bash
Executable File

#!/bin/sh
killonepid(){
local onepid ksig timelimit wcnt
onepid=$1
ksig=$2
if [ -z "$onepid" ]
then
return 0
fi
test -z "$ksig" && ksig=15
#
if [ $onepid -le 100 ]
then
return 0
fi
timelimit=5
wcnt=0
while [ : ]
do
if [ "$ksig" = '0' ]
then
kill -${ksig} $onepid 2>/dev/null
return $?
fi
kill -${ksig} $onepid 2>/dev/null
test $? -ne 0 && return 0
let wcnt=$wcnt+1
test $wcnt -gt $timelimit && break
sleep 1
done
kill -9 $onepid 2>/dev/null
test $? -eq 0 && return 1
return 0
#
}
pidfile=$1
if [ -z "$pidfile" ]
then
exit 0
fi
if [ ! -s "$pidfile" ]
then
exit 0
fi
killonepid "$(cat $pidfile 2>/dev/null)" $2
exit $?
#