linux deploy

#!/bin/bash
JAVA_HOME=/usr
JAVA=$JAVA_HOME/bin/java
projcet_root="/data/projects"
#logfile="nohup.out"
target_url="http://172.20.20.28/target"
extention=".jar"
config_path="/data/env"
backups="/data/backups"

function green_echo(){
    echo -e "\033[32m $1 \033[0m"
}

function red_echo(){
    echo -e "\033[31m $1  \033[0m"
}

function _checklog() {
    project_name=$1
    logfile=$2
    log_name="${projcet_root}/${project_name}/${logfile}"
    flag=0
    while true;do
        line_number=`grep -n "Started.*seconds (JVM running for.*)$" ${log_name} | awk -F: '{print $1}'`
        if [ ! -z $line_number ];then
            #echo $line_number
            sed -n "1,${line_number}p" $log_name | grep "ERROR" > /dev/null 2>&1
            if [ $? -eq 0 ];then
                red_echo "-->DeploymentOutput: Error occured during Application Startup!"
                exit 1
            else
                green_echo "-->DeploymentOutput: Application Startup with no ERRORs!"
                exit 0
            fi
            break
        fi
        flag=`expr $flag + 1`
        sleep 10
        if [ $flag -gt 10 ];then
            red_echo "-->DeploymentOutput: Application do not start in 100 seconds."
            exit 2
        fi
    done
}

function _restart()
{
    project_name=$1
    logfile=$2
    base_dir="${projcet_root}/${project_name}"
    pid=`ps aux | grep -v grep | grep ${project_name}${extention}  | awk '{print $2}'`
    kill -9 $pid
    nohup $JAVA -Xms512m -Xmx512m -XX:NewSize=400m -XX:+UseConcMarkSweepGC  -XX:+UnlockDiagnosticVMOptions -XX:+UnsyncloadClass -XX:+UseParNewGC -XX:+CMSParallelRemarkEnabled -XX:+HeapDumpOnOutOfMemoryError -Dglobal.config.path=${config_path} -Ddubbo.application.qos.enable=false  -jar ${base_dir}/${project_name}${extention} >> ${base_dir}/${logfile} 2>&1 &
    green_echo "Restart project $project_name..."
    sleep 5
    exit 0
}

function _taillog(){
    project_name=$1
    logfile=$2
    tail -100f $project_name/$logfile
    exit 0
}

function _backuplog(){
    base_dir=$1
    logfile=$2
    if [ -f $base_dir/${logfile} ];then
        rm -f $base_dir/${logfile}.3 >/dev/null 2>&1
        mv $base_dir/${logfile}.2 $base_dir/${logfile}.3 >/dev/null 2>&1
        mv $base_dir/${logfile}.1 $base_dir/${logfile}.2 >/dev/null 2>&1
        mv $base_dir/${logfile} $base_dir/${logfile}.1 >/dev/null 2>&1
    fi
}

function _deploy(){
    project_name=$1
    logfile=$2
    base_dir="${projcet_root}/${project_name}"

    if [ ! -d $base_dir ];then
        red_echo "Project $project_name not configured!"
        exit 2
    fi

    pid=`ps aux | grep -v grep | grep ${project_name}${extention}  | awk '{print $2}'`
    kill -9 $pid
    green_echo "Stop project $project_name..."

    #make backups,just keep the last one jar
    if [ -f $base_dir/${project_name}${extention} ];then
        mv $base_dir/${project_name}${extention} $backups
    fi

    _backuplog ${base_dir} ${logfile}

    #get project jar
    wget -nv -P $base_dir/  $target_url/${project_name}${extention}

    green_echo "Starting project $project_name..."
    nohup $JAVA -Xms512m -Xmx512m -XX:NewSize=400m -XX:+UseConcMarkSweepGC  -XX:+UnlockDiagnosticVMOptions -XX:+UnsyncloadClass -XX:+UseParNewGC -XX:+CMSParallelRemarkEnabled -XX:+HeapDumpOnOutOfMemoryError -Dglobal.config.path=${config_path} -Ddubbo.application.qos.enable=false  -jar ${base_dir}/${project_name}${extention} > ${base_dir}/${logfile} 2>&1 &

}
#
if [ $# -gt 2 ];then
    echo "Usage: ./$0 PROJECT_NAME "
    echo "Usage: ./$0 restart PROJECT_NAME"
    exit 1
fi
#
args=$1
#
if [ $args == "restart" -a $# -eq 2 ];then
    project_name=$2
    logfile="${project_name}.log"
    _restart $project_name $logfile
elif [ $args == "tail" -a $# -eq 2 ];then
    project_name=$2
    logfile="${project_name}.log"
    _taillog $project_name $logfile
else
    project_name=$1
    logfile="${project_name}.log"
    _deploy $project_name $logfile
    green_echo "Checking Application Status..."
    _checklog $project_name $logfile
fi
 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值