美文网首页
进程杀死与启动脚本

进程杀死与启动脚本

作者: jinjin1009 | 来源:发表于2021-10-21 19:52 被阅读0次
    #!/bin/sh,初始化配置文件
    source ~/.bash_profile
    
    # make sure process can running behind,因为有时通过shell启动的脚本容易被杀死,需要进行设定
    BUILD_ID=dontKillMe
    
    # 获取zk这个服务的进程号
    # grep -v grep 是去除包含grep文本的进程行
    # awk 用空格截断,其中 print$2 是获取进程号
    PID=`ps -ef | grep $ZK_HOME |grep -v grep| awk '{print $2}'`
    echo 'zk进程号'$PID
    
    # 执行关闭服务进程
    cd $ZK_HOME/bin && ./zkServer.sh stop
    sleep 5
    echo 'waiting zookeeper stop'
    
    # 返回zk这个服务有几个进程, `grep -v grep` 是去除包含grep文本的进程行
    PID_NUM=`ps -ef | grep $ZK_HOME | grep -v grep | wc -l`
    LOOP=0
    
    # 如果进程数>=1,说明zk服务没有被关闭,只有当循环数小于5次,会默认循环每次等5秒
    while [ $PID_NUM -ge 1 ]&&[ $LOOP -lt 5 ]; do
        echo "----- waiting zookeeper shutdown, sleep 5s"
        # 循环一次sleep 5 秒
        sleep 5;
        # 循环一次LOOP增加一次
        LOOP=`expr $LOOP + 1`;
        # 每次更新当前的zk服务进程数
        PID_NUM=`ps -ef|grep $ZK_HOME|grep -v grep|wc -l`
        echo "zk process number: "$PID_NUM
    done
    # 当循环次数超过5次,等待时间超过5*5+5 秒,默认采用脚本进行服务关闭不生效
    if [ $LOOP -ge 5 ]; then
        echo "----- Force kill zk"
        kill -9 $PID;
        echo "###################zk"$PID
    fi
    echo "zk stop finish"
    
    # start zookeeper
    cd $ZK_HOME/bin && ./zkServer.sh start
    sleep 5
    
    # 获取zk这个服务有没有进程起来,起来的进程数量
    PID_NUM2=`ps -ef | grep $ZK_HOME  | grep -v grep | wc -l`
    # zk这个服务起来的进程数量>=1,说明服务已经起来
    if [ PID_NUM2 -ge 1]; then
        echo " -----zk restart ok"
    fi
    

    相关文章

      网友评论

          本文标题:进程杀死与启动脚本

          本文链接:https://www.haomeiwen.com/subject/ifkqaltx.html