美文网首页
SpringCloud启动脚本

SpringCloud启动脚本

作者: zxcvbnmzsedr | 来源:发表于2018-06-28 22:04 被阅读0次

    启动脚本有六个参数
    依次是:启动命令、环境、App的Name、运行时端口、eureka的地址、对应的服务器外网地址

    # 服务器外网地址,
    有的服务器会有多个IP地址
    ,但是注册到eureka上面的实例一般都是使用的内网地址,
    所以需要排除外网地址
    
    inpp=$6
    server=`/sbin/ifconfig -a | grep inet | grep -v 127.0.0.1 | grep -v inet6 | awk '{print $2}' | tr -d "addrs"|grep -v $inpp`
    
    if [ -z "$server" ];then
      server=$inpp
    fi
    echo 服务器地址 $server
    
    # 实例的名字
    APP=$3
    # 环境
    ENV=$2
    # 打包出来的jar包的名字,可以直接从外面传
    APP_NAME=$APP-1.0.0-SNAPSHOT
    # 运行时端口
    PORT=$4
    # eureka地址
    EUREKA_HOST=$5
    
    HEAP_MEMORY=512M
    PERM_MEMORY=0M
    DIRECT_MEMORY=64M
    
    APP_HOME=`pwd`
    
    # 组装启动时的JVM参数
    
    JVM_OPTS="-server -XX:+HeapDumpOnOutOfMemoryError"
    JVM_OPTS="${JVM_OPTS} -Xms${HEAP_MEMORY} -Xmx${HEAP_MEMORY} -XX:PermSize=${PERM_MEMORY} -XX:MaxPermSize=${PERM_MEMORY}  "
    JVM_OPTS="${JVM_OPTS} -XX:MaxDirectMemorySize=${DIRECT_MEMORY}"
    JVM_OPTS="${JVM_OPTS} -XX:+AlwaysPreTouch"
    JVM_OPTS="${JVM_OPTS} -Duser.dir=${APP_HOME} -Dapp.name=$APP_NAME"
    
    SPRING_OPTS="--myhost=$EUREKA_HOST --spring.profiles.active=$ENV --server.port=$PORT"
    JAR_FILE=$APP_NAME.jar
    LOG_PATH=$APP_HOME/logs/log
    
    
    start(){
      checkpid
      if [ ! -n "$pid" ]; then
        echo "启动命令"
        echo "nohup java -jar $JVM_OPTS $JAR_FILE $SPRING_OPTS >/dev/null 2>&1 &"
        nohup java -jar $JVM_OPTS $JAR_FILE $SPRING_OPTS >/dev/null 2>&1 &
        echo "---------------------------------"
        echo "启动完成,按CTRL+C退出日志界面即可>>>>>"
        echo "---------------------------------"
        sleep 5s
        # 到日志文件夹中寻找最新的一个日志文件
        LOG_FILE=`ls -t $LOG_PATH/*.log | head -1`
        # 打印启动日志,如果发现日志中包含Tomcat started这个字符说明启动成功,结束打印进程
        tail -f $LOG_FILE|while read line
        do
            kw=`echo $line|grep "Tomcat started"|wc -l`
            if [ $kw -lt 1 ];then
                echo $line
            else
            tail_pid=`ps -ef |grep $LOG_FILE |grep -v grep |awk '{print $2}'`
            kill -9 $tail_pid
            fi
        done
        echo "执行成功"
      else
          echo "$APP_NAME is runing PID: $pid"
      fi
    }
    
    checkpid(){
        pid=`ps -ef |grep $JAR_FILE |grep -v grep |awk '{print $2}'`
    }
    stop(){
         # 停止前直接到对应的eureka服务中删除对应的实例,URL规则可以根据注册时的不同规则自行制定
          curl -X "DELETE"  "http://$EUREKA_HOST/eureka/apps/$APP/$server:$PORT"
        checkpid
        if [ ! -n "$pid" ]; then
         echo "$APP_NAME not runing"
        else
          echo "$APP_NAME stop..."
          kill $pid
          sleep 2s
          kill -9 $pid
        fi
    }
    
    restart(){
        stop
        sleep 1s
        start
    }
    
    status(){
       checkpid
       if [ ! -n "$pid" ]; then
         echo "$APP_NAME not runing"
       else
         echo "$APP_NAME runing PID: $pid"
       fi
    }
    case $1 in
              start) start;;
              stop)  stop;;
              restart)  restart;;
              status)  status;;
                  *)  echo "require start|stop|restart|status"  ;;
    esac
    
    

    相关文章

      网友评论

          本文标题:SpringCloud启动脚本

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