jar包部署脚本样例

这是一个自动化部署脚本,主要功能包括检查服务状态、停止服务、备份原有文件、部署新版本及启动服务。脚本首先获取当前目录下的jar包名,然后检查服务路径,停止服务进程,并进行备份操作。最后,将新版本的jar包复制到服务路径并启动服务。整个过程确保了服务的平滑升级。
摘要由CSDN通过智能技术生成
#!/bin/bash
CURR_DIR=$(pwd)
#获取分发到节点的包名
PACKAGE_NAME=$(find . -name "*.jar"|awk -F'/' '{print $NF}')
echo "即将部署$PACKAGE_NAME"
#查看部署前部署路径下的内容
ls ${SERVICE_PATH} -l
#停服务
stop_service(){
echo "准备停服"
isServerExist=$(ps -ef|grep ${PACKAGE_NAME}|grep -v grep|awk '{print $2}'|wc -l)
SERVICE_PID=$(ps -ef|grep $PACKAGE_NAME|grep -v grep|awk '{print $2}')
if [ "$isServerExist" = "0" ]; then
    echo "${SERVICE_NAME}进程不存在!"
elif [ "$isServerExist" -ge 1 ]; then
    echo "正在停止 ${SERVICE_NAME}"
    cd ${SERVICE_PATH}
    kill -9 ${SERVICE_PID}
    A=`echo $?`
    if [ $A == 0 ];then
        echo "${SERVICE_NAME} 停服成功"
        sleep 20
    else
        echo "${SERVICE_NAME} 停服失败"
        exit 1
    fi
else
    echo "${SERVICE_NAME}存在多个进程$SERVICE_PID,请检查"
    exit 1
fi
}
#备份原文件
backup_service() {
echo "开始执行备份操作"
if [ ! -d $BACKUP_PATH/history/ ];then
    mkdir -p $BACKUP_PATH/history/
fi
echo "如果backup中存在前一次备份,将前一次备份移动到history中..."
if [ -d $BACKUP_PATH/${SERVICE_NAME}* ];then
    /bin/mv $BACKUP_PATH/${SERVICE_NAME}* $BACKUP_PATH/history/
    A=`echo $?`
    if [ $A == 0 ];then
        echo "${SERVICE_NAME} 前一次备份移动成功"
    else
        echo "${SERVICE_NAME} 前一次备份移动失败"
    exit 2
    fi
else
    echo "不存在前一次备份,不处理"
fi
echo -e "备份本次上线前部署目录中的内容..."
if [ -f "${SERVICE_PATH}/$PACKAGE_NAME" ]; then
    mkdir -p $BACKUP_PATH/${SERVICE_NAME}.`date +%y%m%d_%H%M%S`
    cd ${SERVICE_PATH}
    /bin/mv ${SERVICE_PATH}/${PACKAGE_NAME} $BACKUP_PATH/${SERVICE_NAME}*/
    B=`echo $?`
    if [ $B == 0 ];then
        echo "${SERVICE_NAME} 本次上线前数据备份成功"
    else
        echo "${SERVICE_NAME} 本次上线前数据备份失败"
        exit 2
    fi
else
    echo "部署路径${SERVICE_PATH}中不存在$PACKAGE_NAME,不做备份"
fi
}
#部署方法
deploy_service() {
cd $CURR_DIR
pwd
echo "开始传输版本包"
cp -r ${PACKAGE_NAME} ${SERVICE_PATH}/
sleep 2
echo "开始启动,请等待~"
cd ${SERVICE_PATH}
nohup java -jar ${PACKAGE_NAME} >>./nohup.out 2>&1 &
sleep 30
isServerExist=$(ps -ef|grep $PACKAGE_NAME|grep -v grep|awk '{print $2}'|wc -l)
if [ "$isServerExist" == "1" ]; then
    echo "${SERVICE_NAME} 服务启动成功!"
else
    echo "${SERVICE_NAME}进程数$isServerExist,服务启动失败!"
    exit 1
fi
}
#部署前的一些检查:部署目录、部分目录是否赋值、是否存在
echo "确认部署目录存在"
if [ ! ${SERVICE_PATH} ];then
    echo "SERVICE_PATH此参数未设置,请检查!"
exit 1
elif [ ! ${BACKUP_PATH} ];then
    echo "BACKUP_PATH此参数未设置,请检查!"
    exit 1
elif [ ! -d ${SERVICE_PATH} ];then
    echo "部署目录不存在,初次部署,自动创建该目录!"
    mkdir -p ${SERVICE_PATH}
    deploy_service
else
    stop_service
    backup_service
    deploy_service
fi

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值