我们有一个bash脚本可以关闭我们的应用程序,特别是我们有这样的停止函数。
doStop(){
pid=`cat ${pidfile}`
echo "Gracefully terminating server with pid $pid"
kill ${pid}
echo "Server stopped"
}
然而,由于各种原因,杀戮可能会失败,我们希望像这样杀死它......
kill -9 ${pid}
有没有办法等待kill工作,如果没有发出kill -9?
答案 0 :(得分:1)
来自man
kill`
kill - 向进程发送信号
这意味着kill
没有收到来自该流程的任何回复。 “等待”该过程的唯一方法是检查该过程是否存在一段时间,并在时间结束时发送给他kill -9
。
例如(未经测试)
doStop(){
pid=$(cat ${pidfile})
echo "Gracefully terminating server with pid $pid"
kill ${pid}
let count=60
while [[ $count -ge 0 ]] && [[ -n "$(ps --pid ${pid} -o pid=)" ]]
do
sleep 1
let "count--"
done
if [[ -n "$(ps --pid ${pid} -o pid=)" ]];
then
kill -9 ${pid}
fi
if [[ -n "$(ps --pid ${pid} -o pid=)" ]];
then
echo "Server stopped"
exit 0
else
echo "Failed to stop server"
exit 1
fi
}