• Linux下shell通用脚本启动jar(微服务)


    Linux下shell通用脚本启动jar(微服务)

    vim app_jar.sh

    #!/bin/bash
    
    #source /etc/profile
    # Auth:https://www.cnblogs.com/liucx/
    # Please change these parameters according to your real env.
    # set Java Home: Remember that dolphin only supports JDK8!
    JAVA_HOME=/usr/java/jdk1.8.0_162
    
    # application directory
    cd `dirname $0`
    APP_HOME=`pwd`
    
    APP_NAME="`cd ${APP_HOME} && find -name '*.jar' `"
    JAR_HOME=`pwd |awk -F"/" '{print $NF}'`
    # Java JVM lunch parameters
    if [ x"$JAVA_MEM_OPTS" == x ];then
        JAVA_MEM_OPTS="-server -Xms512m -Xmx512m -Xmn128m -Xss256k -XX:+DisableExplicitGC -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled -XX:LargePageSizeInBytes=128m -XX:+UseFastAccessorMethods -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=70 "
    fi
    
    
    # waiting timeout for starting, in seconds
    START_WAIT_TIMEOUT=30
    
    psid=0
     
    checkpid() {
       javaps=`$JAVA_HOME/bin/jps -l | grep "$JAR_HOME"`
       if [ -n "$javaps" ]; then
          psid=`echo $javaps | awk '{print $1}'`
       else
          psid=0
       fi
    }
    
    
    
    start() {
       checkpid
    
       if [ $psid -ne 0 ]; then
          echo "================================"
          echo "warn: $APP_NAME already started! (pid=$psid)"
          echo "================================"
       else
          echo -n "Starting $APP_NAME ..."
          #-Dspring.profiles.active=dev 指定环境
          nohup $JAVA_HOME/bin/java -jar -Dspring.profiles.active=dev -DCONFIG_ENABLE=true $JAVA_MEM_OPTS  ${APP_NAME} >${JAR_HOME}.log 2>&1 &   
          checkpid
          if [ $psid -ne 0 ]; then
             echo "(pid=$psid) [OK]"
          else
             echo "[Failed]"
          fi
       fi
    }
    
    stop() {
        
       sleep 2
       checkpid
    
       if [ $psid -ne 0 ]; then
          echo -n "Stopping $APP_NAME ...(pid=$psid) "
          #kill -9 $psid
          kill -9 $psid
          if [ $? -eq 0 ]; then
             echo "[OK]"
          else
             echo "[Failed]"
          fi
    
    #      checkpid
    #      if [ $psid -ne 0 ]; then
    #         stop
    #      fi
       else
          echo "================================"
          echo "warn: $APP_NAME is not running"
          echo "================================"
       fi
    }
    
    
    
    status() {
       checkpid
    
       if [ $psid -ne 0 ];  then
          echo "$APP_NAME is running! (pid=$psid)"
       else
          echo "$APP_NAME is not running"
       fi
    }
    
    
    info() {
       echo "System Information:"
       echo "****************************"
       echo `head -n 1 /etc/issue`
       echo `uname -a`
       echo
       echo "JAVA_HOME=$JAVA_HOME"
       echo `$JAVA_HOME/bin/java -version`
       echo
       echo "APP_HOME=$APP_HOME"
       echo "APP_NAME=$APP_NAME"
       echo "****************************"
    }
    
    case "$1" in
       'start')
          start
          ;;
       'stop')
         stop
         ;;
       'restart')
         stop
         echo "You restart the application ..."
         start #
         ;;
       'status')
         status
         ;;
       'info')
         info
         ;;
      *)
         echo "Usage: $0 {start|stop|restart|status|info}"
         exit 1
    esac

    使用方式:

    app_jar.sh  start

    app_jar.sh  stop

    app_jar.sh  restart

    注:该脚本只需要放在jar包当前目录下即可,脚本当前目录只允许存在一个jar包,如果多个会同时启动或重启

    还需提醒下:启动的jar包名主体不能改变,防止脚本无效。目前正在公司生产环境使用中,希望您纠正,提出建议。

  • 相关阅读:
    K8S-安全机制
    K8S-Service
    K8S-Pod资源管理
    K8S-kubelet启动过程
    每日进度
    每日进度
    每日进度
    每日进度
    每日进度
    归纳及计划
  • 原文地址:https://www.cnblogs.com/liucx/p/11757003.html
Copyright © 2020-2023  润新知