shell启停服务脚本模板

一、 启动脚本模板:符合幂等性

  如果该服务已经启动,再次调用该脚本,不会报错,也就是说可以反复多次调用,另外启动成功返回 一个参数,提供给自动发布平台校验该服务是否启动

#!/bin/bash
instancename=
# check is instance running
PID=`ps -ef | $instancename | grep -v grep `
if [ ! -z "$PID" ]; then
    echo "instance $instancename is running."
    exit 0
fi

# start instance
# TODO: start cmd


# chenk whether instance be running by url or key word in logfile,choose one or check url
url=
loop=60
count=0
while $count < 60
do
        curl $url && exit 0
        sleep 1
        count=$(($count + 1))
done
if [ $count -ge 60 ];then
        echo "[ERROR]: Timeout ,failed."
        exit 1
fi
echo "[INFO]: Instance $instancename started."

# or check key word in logfile
keyword= xxx
logfile=
orgLineNum=`wc -1 $logfile | cut -d " " -f1`
loop=60
count=0
while $count < 60
do
        endLineNum=`wc -1 $logfile | cut -d " " -f1`
        deltaLine=$(($endLineNum - $orgLineNum))
        tail -n $deltaLine $logfile | sed /$keyword/ && break
        $orgLineNum=$endLineNum
        sleep 1
done
if [ $count -ge 60 ];then
        echo "[ERROR]: Timeout , failed."
        exit 1
fi
echo "[INFO]: Instance $instancename started."  

二、停止脚本,符合幂等性

  可以重复调用

#!/bin/bash
instancename=
#check is instance running
PID=`ps -ef | grep $instancename | grep -v grep `
if [ -z "$PID" ];then
        echo "instance $instancename is not running."
        exit 0
fi

# stop instance
# TODO : stop cmd


# if stop cmd failed ,may kill or exit with error

#or kill
PID=`ps -ef | grep $instancename | grep -v grep `
if [ ! -z "$PID" ];then
        echo "stop cmd failed , try to kill."
        kill $PID
fi

# if kill failed ,may kill -9
if [ ! -z "$PID" ];then
        echo "kill process failed, try to kill -9."
        kill -9 $PID
fi

# or exit with error
PID=`ps -ef | grep $instancename | grep -v grep `
if [ ! -z "$PID" ];then
        echo "stop cmd failed."
        exit 1
fi

  

 

posted @ 2019-08-13 18:54  CansonHai  阅读(911)  评论(0编辑  收藏  举报