zoukankan      html  css  js  c++  java
  • 微服务一键启动脚本shell没有环境变量的


    #!/bin/bash
    #######################################################
    export JAVA_HOME=/root/data/app/jdk1.8.0_191
    export JRE_HOME=$JAVA_HOME/jre
    #程序代码数组
    APPS=(lovelifebussiness lovelifebussinessweb loveliferightservice)

    #程序名称数组

    NAMES=(爱生活业务服务后台 爱生活业务服务前台 爱生活权限服务后台)

    #jar包数组

    JARS=(loveLife-8018-SNAPSHOT.jar loveLifeWeb-8020-SNAPSHOT.war loveLifeRightService-8019-SNAPSHOT.jar)

    #jar包路径数组

    PATHS=(/root/data/app/lovelife/lovelife-service /root/data/app/lovelife/lovelife-web /root/data/app/lovelife/lovelife-rightservice)

    start(){
    local APPNAME=
    local NAME=
    local CLASSNAME=
    local PROJECTDIR=
    local command="sh service.sh start"
    local cmd2="$1"
    local cmd2ok=0
    local cnt=0
    local okcnt=0
    #local C_PID="0"
    #for i in `seq 0 22`
    echo "---------------------------开始启动服务..."
    for(( i=0;i<${#APPS[@]};i++))
    do
    APPNAME=${APPS[$i]}
    NAME=${NAMES[$i]}
    CLASSNAME=${JARS[$i]}
    PROJECTDIR=${PATHS[$i]}
    if [ "$cmd2" == "all" ] || [ "$cmd2" == "$APPNAME" ]; then
    cmd2ok=1
    C_PID="0"
    cnt=0
    #ps -ef | grep "$CLASSNAME" | awk '{print $2}' | while read pid
    PID=`ps -ef |grep $(echo $CLASSNAME |awk -F/ '{print $NF}') | grep -v grep | awk '{print $2}'`
    #do
    #C_PID=$(ps --no-heading $pid | wc -l)
    #if [ "$C_PID" == "1" ]; then
    if [ -n "$PID" ]
    then
    echo "$APPNAME---$NAME:己经运行,PID=$PID"
    #okcnt=$(($okcnt+1))
    else
    cd $PROJECTDIR
    rm -f $PROJECTDIR/nohup.out
    command="nohup $JRE_HOME/bin/java -Xms128m -Xmx256m -jar $CLASSNAME"
    exec $command >> $PROJECTDIR/nohup.out &
    #ps -ef | grep "$CLASSNAME" | awk '{print $2}' | while read pid
    #do
    # C_PID=$(ps --no-heading $pid | wc -l)
    #done
    PID=`ps -ef |grep $(echo $CLASSNAME |awk -F/ '{print $NF}') | grep -v grep | awk '{print $2}'`
    cnt=0
    #while (("$C_PID" == "0"))
    while [ -z "$PID" ]
    do
    if (($cnt==30))
    then
    echo "$APPNAME---$NAME:$cnt秒内未启动,请检查!"
    break
    fi
    cnt=$(($cnt+1))
    sleep 1s
    #ps -ef | grep "$CLASSNAME" | awk '{print $2}' | while read pid
    #do
    # C_PID=$(ps --no-heading $pid | wc -l)
    #done
    PID=`ps -ef |grep $(echo $CLASSNAME |awk -F/ '{print $NF}') | grep -v grep | awk '{print $2}'`
    done
    okcnt=$(($okcnt+1))
    echo "$APPNAME---$NAME:己经成功启动,PID=$PID"
    #出借模块和总装模块启动较慢
    if [ "$APPNAME" == "deal" ] ;
    then
    echo "$APPNAME---$NAME:启动中..."
    sleep 30s
    fi
    if [ "$APPNAME" == "dispatch" ] ;
    then
    echo "$APPNAME---$NAME:启动中..."
    sleep 10s
    fi
    fi
    #done
    fi
    done
    if (($cmd2ok==0))
    then
    echo "command2: all | lovelifebussiness | lovelifebussinessweb | loveliferightservice "
    else
    echo "---------------------------本次启动:$okcnt个服务"
    fi
    }

    stop(){
    local APPNAME=
    local CLASSNAME=
    local PROJECTDIR=
    local command="sh service.sh stop"
    local cmd2="$1"
    local cmd2ok=0
    #local C_PID="0"
    local okcnt=0
    echo "---------------------------开始停止服务..."
    for(( i=0;i<${#APPS[@]};i++))
    do
    APPNAME=${APPS[$i]}
    NAME=${NAMES[$i]}
    CLASSNAME=${JARS[$i]}
    PROJECTDIR=${PATHS[$i]}
    if [ "$cmd2" == "all" ] || [ "$cmd2" == "$APPNAME" ]; then
    cmd2ok=1
    #ps -ef | grep "$CLASSNAME" | awk '{print $2}' | while read PID
    PID=`ps -ef |grep $(echo $CLASSNAME |awk -F/ '{print $NF}') | grep -v grep | awk '{print $2}'`
    #do
    #C_PID=$(ps --no-heading $PID | wc -l)
    #if [ "$C_PID" == "1" ]; then
    if [ -n "$PID" ]
    then
    echo "$NAME:PID=$PID准备结束"
    kill $PID
    #C_PID=$(ps --no-heading $PID | wc -l)
    #while (("$C_PID" == "1"))
    PID=`ps -ef |grep $(echo $CLASSNAME |awk -F/ '{print $NF}') | grep -v grep | awk '{print $2}'`
    while [ -n "$PID" ]
    do
    sleep 1s
    #C_PID=$(ps --no-heading $PID | wc -l)
    PID=`ps -ef |grep $(echo $CLASSNAME |awk -F/ '{print $NF}') | grep -v grep | awk '{print $2}'`
    done
    echo "$NAME:成功结束"
    okcnt=$(($okcnt+1))
    else
    echo "$NAME:未运行"
    fi
    #done
    fi
    done
    if (($cmd2ok==0))
    then
    echo "command2: all | lovelifebussiness | lovelifebussinessweb | loveliferightservice "
    else
    echo "---------------------------本次共停止:$okcnt个服务"
    fi
    }

    case "$1" in
    start)
    start "$2"
    exit 1
    ;;
    stop)
    stop "$2"
    ;;
    restart)
    stop "$2"
    start "$2"
    ;;
    *)
    echo "command1: start|stop|restart"
    exit 1
    ;;
    esac

    .将编辑好的shell脚本放到liunx服务器上,若是在windows环境下编写的脚本则需要在liunx上格式化

    首先 安装dos2unix命令 ,安装命令:yum install dos2unix 然后执行命令:dos2unix demo.sh 

     此时则可以执行shell脚本了,sh demo.sh (start|stop|restart)

  • 相关阅读:
    Python的list、tuple、dict常用方法
    Linux和windows下安装python
    Python数据类型一
    pycharm设置
    Python流程控制条件语句和循环语句
    Python类型转换和使用帮助信息
    Feedback Control
    【July】【Machine Leraning】1.微积分和概率论
    Homework
    美海军研究生院(NPS' Advanced Robotic Systems Engineering Laboratory (ARSENL) ) 50 Autonomous UAVs in Flight
  • 原文地址:https://www.cnblogs.com/zhangzhiqin/p/10175408.html
Copyright © 2011-2022 走看看