• java程序启动脚本


    #!/bin/bash
    #
    # description: {{ APPID }} init script
    # processname: tomcat  
    # chkconfig: 234 20 80 
    
    APPID="AppPurchaseService"
    USER="deploy"
    
    ### paths
    PROJECT_DIR=/workspace/carkey/AppPurchaseService/latest/
    PROJECT_LOG=/workspace/carkey/AppPurchaseService/
    MAIN_CLASS="com.hellobike.platform.aps.deploy.Application"
    START_OPTS="$START_OPTS -DAPPID=$APPID"
    
    cd ${PROJECT_DIR}
    
    #Memory configs
    MEM_OPTS="-Xms5120m -Xmx5120m -Xmn1706m -XX:MaxMetaspaceSize=512m -XX:MetaspaceSize=512m"
    
    #GC OPTS
    GC_OPTS="$GC_OPTS -XX:+UseConcMarkSweepGC 
    -XX:+UseParNewGC 
    -XX:+UseCMSCompactAtFullCollection 
    -XX:CMSFullGCsBeforeCompaction=0 
    -XX:CMSInitiatingOccupancyFraction=62 
    -XX:CMSTriggerRatio=70"
    
    #GC logging
    GC_OPTS="$GC_OPTS -Xloggc:${PROJECT_LOG}/logs/gc.log"
    GC_OPTS="$GC_OPTS -XX:+PrintGCDateStamps -XX:+PrintGCDetails"
    GC_OPTS="$GC_OPTS -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=${PROJECT_LOG}/logs/heapdump.hprof"
    
    # JMX OPTS
    JMX_OPTS="$JMX_OPTS -Dcom.sun.management.jmxremote.port=15005 
    -Dcom.sun.management.jmxremote.authenticate=false 
    -Dcom.sun.management.jmxremote.ssl=false 
    -Dcom.sun.management.jmxremote=true 
    -Dowl.metrics.kafka.servers=owl.kafka1.ttbike.com.cn:9092,owl.kafka2.ttbike.com.cn:9092,owl.kafka3.ttbike.com.cn:9092"
    
    
    START_OPTS="$START_OPTS -Djava.io.tmpdir=$PROJECT_DIR/temp/"
    START_OPTS="$START_OPTS -Duser.dir=$PROJECT_DIR"
    
    CLASS_PATH="$PROJECT_DIR/conf:$PROJECT_DIR/lib/*:$CLASS_PATH"
    
    
    # get pid
    getPid(){
        if [ -z $1 ]
        then
            echo "Usage: $0 process-pattern" >&2
            exit 1
        fi
    
        exc_pids="^$$$"
        curr_pid=$$
        while [ $curr_pid -gt 0 ]
        do
            curr_pid=`ps -fwwp $curr_pid|grep -v PPID|awk '{print $3}'`
            exc_pids="$exc_pids|^$curr_pid$"
        done
        curr_script=$0
        curr_script=${curr_script#.}
        curr_script=${curr_script//./\.}
    
        if [ $# -eq 1 ]
        then
            ps -efww|grep "$1"|grep '-DAPPID='|grep -Ev "grep|$curr_script"|awk '{print $2}'|grep -Ev $exc_pids
        else
            firstArg=$1
            shift
            ps -efww|grep "$firstArg "|grep "$*"|grep '-DAPPID='|grep -Ev "grep|$curr_script"|awk '{print $2}'|grep -Ev $exc_pids
        fi
    }
    
    #return value
    retval=0
    getNameFromPid(){
       nowTime1=$(date)
       tips="冲突时间"
       printf "冲突进程信息请查看:/tmp/startCrash.log
    "
    
       echo $tips$nowTime1 >> /tmp/startCrash.log
       echo "冲突进程数量:" $# >> /tmp/startCrash.log
    
       for loop in $*
       do
           ps -ef|grep $loop|grep -v grep >> /tmp/startCrash.log
       done
    }
    # start the server
    start(){
        printf 'Starting the server
    '
        pids=`getPid $APPID`
        if ! [ -z "$pids" ];then
            printf 'Existing process: %d
    ' "$pids"
            getNameFromPid $pids
            retval=1
        else
            #start
            mkdir -p "$PROJECT_DIR/temp/"
            mkdir -p "$PROJECT_DIR/logs/"
            #echo "MEM_OPTS: $MEM_OPTS"
            #echo "GC_OPTS: $GC_OPTS"
            #echo "JMX_OPTS: $JMX_OPTS"
            #echo "START_OPTS: $START_OPTS"
             chown -R deploy.deploy $PROJECT_LOG/
             chown -R deploy.deploy $PROJECT_DIR/
             chown -R deploy.deploy $PROJECT_LOG/logs/
            JAVA_CMD="nohup java -server $MEM_OPTS $GC_OPTS $JMX_OPTS $START_OPTS -Denv=pro -DAPPID=AppPurchaseService -Dfile.encoding=UTF-8 -classpath $CLASS_PATH $MAIN_CLASS $PROJECT_DIR/conf/Configure.json > $PROJECT_LOG/logs/jvm_std.log 2>&1 &"
            echo $JAVA_CMD
            if ! [ `whoami` = "deploy" ];then
              /bin/su $USER -c "mkdir -p $PROJECT_DIR/temp/"
              /bin/su $USER -c "$JAVA_CMD"
            else
              mkdir -p $PROJECT_DIR"/temp/"
              /bin/bash -c "$JAVA_CMD"
            fi
            echo "Process pid: `getPid $APPID`"
            sleep 3
            if [ -z `getPid $APPID` ]
            then
                echo "Failed to start the server"
                retval=1
            else
                echo "Finish $0"
                retval=0
            fi
        fi
    }
    
    # stop the server
    stop(){
        printf 'Stopping the server
    '
        pids=`getPid $APPID`
        if [ -z "$pids" ]
        then
            printf 'process is not running
    '
            retval=0
        else
            #stop
            max_loop=10
            for ((i=0; i<$max_loop; i++))
            do
                pids=`getPid $APPID`
                if [ -z "$pids" ]
                then
                    break;
                fi
    
                if [ $i -gt 5 ]
                then
                    _9="-9"
                fi
    
                for pid in $pids
                do
                    echo "Kill process with pid:$pid and pattern:$MAIN_CLASS"
                    if ! kill $_9 $pid
                    then
                        echo "Failed kill process with pid:$pid and pattern:$MAIN_CLASS"
                    else
                        echo "Succeed kill process with pid:$pid and pattern:$MAIN_CLASS"
                    fi
                done
    
                sleep 3
            done
    
            if [ $i -eq $max_loop ]
            then
                echo_t "Failed kill the processes $pids after try $max_loop times"
                retval=1
            else
                retval=0
            fi
        fi
    }
    
    # status for server
    status(){
        pids=`getPid $APPID`
        if ! [ -z "$pids" ];then
            printf 'server is running: %d
    ' "$pids"
        else
            printf 'server is stopped
    '
        fi
    }
    
    user_exists(){
            if id -u $1 >/dev/null 2>&1; then
            echo "1"
            else
                    echo "0"
            fi
    }
    
    # dispatch the command
    case "$1" in
        start)
        start
        ;;
        stop)
        stop
        ;;
        status)
        status
        ;;
        restart)
        stop
        start
        ;;
        *)
        printf 'Usage: %s {start|stop|restart|status}
    '
        exit 1
        ;;
    esac
    
    
    # exit
    exit "$retval"
    
    
    
    # END OF FILE
  • 相关阅读:
    元素查找
    寂寞的堆
    爱丽丝·玛格特罗依德
    排序的代价
    数字串
    我心永恒
    滑动窗口
    魔法猪学院
    曦皓的幸运数
    曦皓的旅游
  • 原文地址:https://www.cnblogs.com/hhhshct/p/12407660.html
Copyright © 2020-2023  润新知