zoukankan      html  css  js  c++  java
  • 几种常见的启动脚本

    1.spring boot (jar包形式)启停

    #!/usr/bin/env bash
    APP_NAME=whale-uip-datasource-0.0.1-SNAPSHOT
    #JVM参数
    JVM_OPTS="-DPGM_ID=$APP_NAME -Dname=$APP_NAME -Xmx1024M -XX:-UseGCOverheadLimit -Xmx512M -XX:PermSize=256M -XX:MaxPermSize=512M"
    JAR_FILE=$APP_NAME.jar
    start(){
        nohup java -jar $JVM_OPTS $JAR_FILE --spring.config.location=./config/application-fjprod.yml &
        echo "starting completed,press CTRL+C to exit >>>>>"
    }
    
    stop(){
        `ps -ef|grep DPGM_ID=$APP_NAME|grep -v grep|awk '{print "kill -9 "$2}'`
    }
    
    case $1 in
        start) start;;
        stop) stop;;
            *) echo "require start|stop" ;;
    esac
    View Code

    启动命令 ./***.sh start

    停止命令 ./***.sh stop

    2.项目类 main方式启停

    启动脚本:

    #!/bin/sh
    
    # JDK路径
    # JAVA_HOME="/usr/java/jdk1.6.0_31"
    
    # Java程序主体所在的目录
    APP_HOME=.
    
    #设置进程编码
    APP_CODE=IOMC_HNYD_PROVIDER
    
    # Java程序日志所在的目录
    APP_LOG=$APP_HOME/logs
    
    # JVM启动参数
    # -server:一定要作为第一个参数,多个CPU时性能佳
    # -Xloggc:记录GC日志,建议写成绝对路径,如此便可在任意目录下执行该shell脚本
    JAVA_OPTS="-server -Xms64m -Xmx64m -Xloggc:$APP_LOG/gc.log"
    
    # Java主程序,也就是main(String[] args)方法类
    APP_MAIN=com.ztesoft.iomc.web.server.Bootstrap
    
    # classpath参数,包括指定lib目录下的所有jar
    OLDCLASSPATH=${CLASSPATH}
    CLASSPATH=.
    for thirdjar in $APP_HOME/lib/*.jar;
    do
       CLASSPATH=$CLASSPATH:$thirdjar
    done
    if [ "$OLDCLASSPATH" != "" ]; then
      CLASSPATH=${CLASSPATH}:${OLDCLASSPATH}
    fi
    echo $CLASSPATH
    # 初始化全局变量,用于标识交易前置系统的PID(0表示未启动)
    appPID=0
    
    # 获取Java应用的PID
    # ------------------------------------------------------------------------------------------------------
    # 说明:通过JDK自带的jps命令,联合Linux中的grep命令,可以准确查找到Java应用的PID
    #       [jps -l]表示显示Java主程序的完整包路径
    #       awk命令可以分割出PID($1部分)及Java主程序名称($2部分)
    # 例子:[$JAVA_HOME/bin/jps -l | grep $APP_MAIN]命令执行,会看到[5775 com.cucpay.tradeportal.MainApp]
    # 另外:这个命令也可以取到程序的PID-->[ps aux|grep java|grep $APP_MAIN|grep -v grep|awk '{print $2}']
    # ------------------------------------------------------------------------------------------------------
    getAppPID(){
        #javaps=`$JAVA_HOME/bin/jps -l | grep $APP_CODE`
        appps=`ps -ef|grep java|grep $APP_CODE`
     
       if [ -n "$appps" ]; then
            appPID=`echo $appps | awk '{print $2}'`
        else
            appPID=0
        fi
    }
    
    # 启动Java应用程序
    # ------------------------------------------------------------------------------------------------------
    # 1、调用 getAppPID() 函数,刷新$appPID全局变量
    # 2、若程序已经启动($appPID不等于0),则提示程序已启动
    # 3、若程序未被启动,则执行启动命令
    # 4、启动命令执行后,再次调用getAppPID()函数
    # 5、若步骤4执行后,程序的PID不等于0,则打印Success,反之打印Failed
    # 注意:[echo -n]表示打印字符后不换行
    # 注意:[nohup command > /path/nohup.log &]是将作业输出到nohup.log,否则它会输出到该脚本目录下的nohup.out中
    # ------------------------------------------------------------------------------------------------------
    start(){
        getAppPID
        echo "==============================================================================================="
        if [ $appPID -ne 0 ]; then
            echo "$APP_CODE already started(PID=$appPID)"
            echo "==============================================================================================="
        else
            echo -n "Starting $APP_CODE"
            #nohup $JAVA_HOME/bin/java $JAVA_OPTS -classpath $CLASSPATH $APP_MAIN > $APP_LOG/nohup.log &
            nohup $JAVA_HOME/bin/java -DPGM_ID=$APP_CODE -DAPP_NAME=$APP_CODE $JAVA_OPTS -cp .:./bin:${CLASSPATH} -Dfile.encoding=utf-8 $APP_MAIN > $APP_LOG/nohup.log &       
            getAppPID
            if [ $appPID -ne 0 ]; then
                echo "(PID=$appPID)...[Success]"
                echo "==============================================================================================="
            else
                echo "[Failed]"
                echo "==============================================================================================="
            fi
        fi
    }
    
    # 调用启动命令
    start
    tail -f ./logs/nohup.log
    View Code

    启动命令 ./***.sh start

    停止脚本:

    #!/bin/sh
    #APP_MAIN=com.ztesoft.iomc.web.server.WebBootstrap
    APP_CODE=IOMC_HNYD_PROVIDER
    
    appPID=0
    
    getAppPID(){
        #javaps=`$JAVA_HOME/bin/jps -l | grep $APP_CODE`
        appps=`ps -ef|grep java|grep $APP_CODE`
        if [ -n "$appps" ]; then
            appPID=`echo $appps | awk '{print $2}'`
        else
            appPID=0
        fi
    }
    
    # 停止Java应用程序
    # ------------------------------------------------------------------------------------------------------
    # 1、调用getAppPID()函数,刷新$appPID全局变量
    # 2、若程序已经启动($appPID不等于0),则开始执行停止程序操作,否则提示程序未运行
    # 3、使用[kill -9 PID]命令强制杀掉进程
    # 4、使用[$?]获取上一句命令的返回值,若其为0,表示程序已停止运行,则打印Success,反之打印Failed
    # 5、为防止Java程序被启动多次,这里增加了反复检查程序进程的功能,通过递归调用shutdown()函数的方式,反复kill
    # 注意:Shell编程中,[$?]表示上一句命令或者上一个函数的返回值
    # ------------------------------------------------------------------------------------------------------
    
    stop(){
        getAppPID
        echo "==============================================================================================="
        if [ $appPID -ne 0 ]; then
            echo -n "Stopping $APP_CODE(PID=$appPID)..."
            kill -9 $appPID
            if [ $? -eq 0 ]; then
                echo "[Success]"
                echo "==============================================================================================="
            else
                echo "[Failed]"
                echo "==============================================================================================="
            fi
            getAppPID
            if [ $appPID -ne 0 ]; then
                shutdown
            fi
        else
            echo "$APP_CODE is not running"
            echo "==============================================================================================="
        fi
    }
    
    stop
    View Code

    停止命令 ./***.sh stop

    查看状态脚本:

    #!/bin/sh
    #APP_MAIN=com.ztesoft.iomc.web.server.WebBootstrap
    
    APP_CODE=IOMC_HNYD_PROVIDER
    
    appPID=0
    
    getAppPID(){
       # javaps=`$JAVA_HOME/bin/jps -l | grep $APP_CODE`
        appps=`ps -ef|grep java|grep $APP_CODE`
        if [ -n "$appps" ]; then
            appPID=`echo $appps | awk '{print $2}'`
        else
            appPID=0
        fi
    }
    
    status(){
        getAppPID
        echo "==============================================================================================="
        if [ $appPID -ne 0 ]; then
            echo "$APP_CODE is running(PID=$appPID)"
            echo "==============================================================================================="
        else
            echo "$APP_CODE is not running"
            echo "==============================================================================================="
        fi
    }
    
    status
    View Code

    查看命令 ./***.sh status

  • 相关阅读:
    二维数组求矩形最大子数组和
    关于返回一个整数数组中最大子数组的和的问题(详细版)
    学习进度第三周
    人月神话阅读笔记03
    团队开发项目-NABCD模型
    第七周学习总结
    人月神话阅读笔记01
    第六周学习总结
    大道至简阅读笔记03
    结对开发地铁查询
  • 原文地址:https://www.cnblogs.com/linhongwenBlog/p/11213446.html
Copyright © 2011-2022 走看看