cat deploy-service.sh
    
    #!/bin/sh
    # 150812
    # dongliang101@gmail.com
    
    # Variable:
    Package="$1"                           # service package name, ex: zuul
    BackDir="/data/apply-service-backup"  # old package backup path
    LogDir="/var/log/${Package}"           # service logs path
    DeployDir="/srv/${Package}"            # service deploy path
    #DeployDir="/opt/${Package}"            # service deploy path
    ConfDir="/etc/supervisord.d"           # supervisor config path
    HprofDir="/data/var/log/${Package}_hprof"
    
    
    # Deploy a new service package function.
    NewService(){
        if [ ! -f ${ConfDir}/${Package}.ini ] ; then
            [ -d ${LogDir} ] || mkdir -p ${LogDir}/{accesslog,errorlog}
            [ -d ${DeployDir} ] || mkdir -p ${DeployDir}
            [ -d ${HprofDir} ] || mkdir -p ${HprofDir}
            cd ${ConfDir} && cp -a zuul.example ${Package}.ini
            sed -i "s#zuul#${Package}#g" ${Package}.ini && supervisorctl update
        fi
    }
    
    # Update service function.
    UpdateService(){
        #ls /tmp/${Package}-*-SNAPSHOT.jar | awk -F"[.-]" '{print "mv " $0" "$1"."$NF}' | bash
        mkdir -p ${BackDir}
        chow work. -R ${BackDir}
        ls /tmp/${Package}-*-SNAPSHOT.jar
        mv /tmp/${Package}-*-SNAPSHOT.jar /tmp/${Package}.jar
        if [ $?==0 ] ; then
            mv /srv/${Package}/${Package}.jar ${BackDir}/${Package}.jar.$(date +'%Y%m%d%H%S') 2>/dev/null
            #mv /opt/${Package}/${Package}.jar ${BackDir}/${Package}.jar.$(date +'%Y%m%d%H%S') 2>/dev/null
            mv /tmp/${Package}.jar /srv/${Package}/
            supervisorctl restart ${Package}
            find ${BackDir} -name "${Package}.jar.*" -atime +7 -exec rm -f {} \;
            supervisorctl status
        else
            exit 2
    fi
    }
    
    TestService() {
        sleep 60
        #JAVA_HOME=/srv/java/jdk1.8.0_171
        JAVA_HOME=/opt/jdk1.8.0
        PATH=$JAVA_HOME/bin:$PATH
        JEE="/data/apache-jmeter-5.1.1"
        RET="/tmp/TestService.txt"
        sh $JEE/bin/jmeter -n -t $JEE/NB-edit.jmx -l $JEE/logs/data/NB-edit.jtl > $RET
        cat $RET
        num=`awk '/Err:/{print $(NF-1)}' $RET`
        if [ $num -ne 0 ] ; then
          echo '----------Test Failed----------'
        exit 2
        fi
    }
    
    # Main function
    main(){
        NewService
        UpdateService
        #TestService
    }
    
    # Main
    main
    sync;sleep 3; echo 3 > /proc/sys/vm/drop_caches