Skip to content
Snippets Groups Projects
Select Git revision
  • fc8e33a7b61d2e6dab70d5467be00c7f2c390cd4
  • master default protected
  • 3.0
  • develop
  • revert-2069-tripleVersion
  • 3.1
  • rest-protocol
  • feat/remoting_rocketmq
  • dapr-support
  • 1.5
  • 1.4
  • 1.3
  • 1.2
  • 1.1
  • v3.0.3-rc2
  • v3.0.3-rc1
  • v3.0.2
  • v1.5.8
  • v1.5.9-rc1
  • v3.0.1
  • v1.5.8-rc1
  • v3.0.0
  • v3.0.0-rc4-1
  • v3.0.0-rc4
  • v3.0.0-rc3
  • v1.5.7
  • v1.5.7-rc2
  • v3.0.0-rc2
  • remove
  • v1.5.7-rc1
  • v3.0.0-rc1
  • v1.5.7-rc1-tmp
  • 1.5.6
  • v1.5.6
34 results

load.sh

Blame
  • load.sh 4.96 KiB
    #!/usr/bin/env bash
    # ******************************************************
    # DESC    : dubbogo app devops script
    # AUTHOR  : Alex Stocks
    # VERSION : 1.0
    # LICENCE : Apache License 2.0
    # EMAIL   : alexstocks@foxmail.com
    # MOD     : 2016-05-13 02:01
    # FILE    : load.sh
    # ******************************************************
    
    APP_NAME="APPLICATION_NAME"
    APP_ARGS=""
    SLEEP_INTERVAL=5
    MAX_LIFETIME=4000
    
    PROJECT_HOME=""
    OS_NAME=`uname`
    if [[ ${OS_NAME} != "Windows" ]]; then
        PROJECT_HOME=`pwd`
        PROJECT_HOME=${PROJECT_HOME}"/"
    else
        APP_NAME="APPLICATION_NAME.exe"
    fi
    
    export CONF_CONSUMER_FILE_PATH=${PROJECT_HOME}"TARGET_CONF_FILE"
    export APP_LOG_CONF_FILE=${PROJECT_HOME}"TARGET_LOG_CONF_FILE"
    # export GOTRACEBACK=system
    # export GODEBUG=gctrace=1
    
    usage() {
        echo "Usage: $0 start [conf suffix]"
        echo "       $0 stop"
        echo "       $0 term"
        echo "       $0 restart"
        echo "       $0 list"
        echo "       $0 monitor"
        echo "       $0 crontab"
        exit
    }
    
    start() {
        arg=$1
        if [ "$arg" = "" ];then
            echo "No registry type! Default client.yml!"
        else
            export CONF_CONSUMER_FILE_PATH=${CONF_CONSUMER_FILE_PATH//\.yml/\_$arg\.yml}
        fi
        if [ ! -f "${CONF_CONSUMER_FILE_PATH}" ];then
            echo $CONF_CONSUMER_FILE_PATH" is not existing!"
            return
        fi
        APP_LOG_PATH=${PROJECT_HOME}"logs/"
        mkdir -p ${APP_LOG_PATH}
        APP_BIN=${PROJECT_HOME}sbin/${APP_NAME}
        chmod u+x ${APP_BIN}
        # CMD="nohup ${APP_BIN} ${APP_ARGS} >>${APP_NAME}.nohup.out 2>&1 &"
        CMD="${APP_BIN}"
        eval ${CMD}
        PID=`ps aux | grep -w ${APP_NAME} | grep -v grep | awk '{print $2}'`
        if [[ ${OS_NAME} != "Linux" && ${OS_NAME} != "Darwin" ]]; then
            PID=`ps aux | grep -w ${APP_NAME} | grep -v grep | awk '{print $1}'`
        fi
        CUR=`date +%FT%T`
        if [ "${PID}" != "" ]; then
            for p in ${PID}
            do
                echo "start ${APP_NAME} ( pid =" ${p} ") at " ${CUR}
            done
        fi
    }
    
    stop() {
        PID=`ps aux | grep -w ${APP_NAME} | grep -v grep | awk '{print $2}'`
        if [[ ${OS_NAME} != "Linux" && ${OS_NAME} != "Darwin" ]]; then
            PID=`ps aux | grep -w ${APP_NAME} | grep -v grep | awk '{print $1}'`
        fi
        if [ "${PID}" != "" ];
        then
            for ps in ${PID}
            do
                echo "kill -SIGINT ${APP_NAME} ( pid =" ${ps} ")"
                kill -2 ${ps}
            done
        fi
    }
    
    
    term() {
        PID=`ps aux | grep -w ${APP_NAME} | grep -v grep | awk '{print $2}'`
        if [[ ${OS_NAME} != "Linux" && ${OS_NAME} != "Darwin" ]]; then
            PID=`ps aux | grep -w ${APP_NAME} | grep -v grep | awk '{print $1}'`
        fi
        if [ "${PID}" != "" ];
        then
            for ps in ${PID}
            do
                echo "kill -9 ${APP_NAME} ( pid =" ${ps} ")"
                kill -9 ${ps}
            done
        fi
    }
    
    list() {
        PID=`ps aux | grep -w ${APP_NAME} | grep -v grep | awk '{printf("%s,%s,%s,%s\n", $1, $2, $9, $10)}'`
        if [[ ${OS_NAME} != "Linux" && ${OS_NAME} != "Darwin" ]]; then
            PID=`ps aux | grep -w ${APP_NAME} | grep -v grep | awk '{printf("%s,%s,%s,%s,%s\n", $1, $4, $6, $7, $8)}'`
        fi
    
        if [ "${PID}" != "" ]; then
            echo "list ${APP_NAME}"
    
            if [[ ${OS_NAME} == "Linux" || ${OS_NAME} == "Darwin" ]]; then
                echo "index: user, pid, start, duration"
            else
                echo "index: PID, WINPID, UID, STIME, COMMAND"
            fi
            idx=0
            for ps in ${PID}
            do
                echo "${idx}: ${ps}"
                ((idx ++))
            done
        fi
    }
    
    monitor() {
        idx=0
        while true; do
            PID=`ps aux | grep -w ${APP_NAME} | grep -v grep | awk '{print $2}'`
            if [[ ${OS_NAME} != "Linux" && ${OS_NAME} != "Darwin" ]]; then
                PID=`ps aux | grep -w ${APP_NAME} | grep -v grep | awk '{print $1}'`
            fi
            if [[ "${PID}" == "" ]]; then
                start
                idx=0
            fi
    
            ((LIFE=idx*${SLEEP_INTERVAL}))
            echo "${APP_NAME} ( pid = " ${PID} ") has been working in normal state for " $LIFE " seconds."
            ((idx ++))
            sleep ${SLEEP_INTERVAL}
        done
    }
    
    crontab() {
        idx=0
        while true; do
            PID=`ps aux | grep -w ${APP_NAME} | grep -v grep | awk '{print $2}'`
            if [[ ${OS_NAME} != "Linux" && ${OS_NAME} != "Darwin" ]]; then
                PID=`ps aux | grep -w ${APP_NAME} | grep -v grep | awk '{print $1}'`
            fi
            if [[ "${PID}" == "" ]]; then
                start
                idx=0
            fi
    
            ((LIFE=idx*${SLEEP_INTERVAL}))
            echo "${APP_NAME} ( pid = " ${PID} ") has been working in normal state for " $LIFE " seconds."
            ((idx ++))
            sleep ${SLEEP_INTERVAL}
            if [[ ${LIFE} -gt ${MAX_LIFETIME} ]]; then
                kill -9 ${PID}
            fi
        done
    }
    
    opt=$1
    case C"$opt" in
        Cstart)
            start $2
            ;;
        Cstop)
            stop
            ;;
        Cterm)
            term
            ;;
        Crestart)
            term
            start $2
            ;;
        Clist)
            list
            ;;
        Cmonitor)
            monitor
            ;;
        Ccrontab)
            crontab
            ;;
        C*)
            usage
            ;;
    esac