shell编程中之 nohup 必须手动 CTRL + C 退出

2021-08-10  本文已影响0人  liurongming

deploy() 函数中, [ ! -f ${UP_JARFILE} ] 与 nohup java -server 拆成两行 问题解决。

#!/bin/bash

# 当前时间
CUR_TIME=$(date "+%Y%m%d_%H%M%S")
# 源码编译目录(含dist)
DIST_DIR="$WORKSPACE"
DIR_TMP="$WORKSPACE_TMP"

#DIST_DIR="/var/lib/jenkins/workspace/xxx-cloud"
#DIR_TMP="/var/lib/jenkins/workspace/xxx-cloud@tmp"
# 部署服务器地址
UP_SVR_IP="192.168.5.175"
# 部署目录
UP_DIR="/opt/xxx"
# 上传jar文件a
UP_JARFILE="xxx-system-1.0.1.jar"

# 内存参数
MEM_OPTS="-Xms512m -Xmx512m -Xss1024K -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=512m"
#Encoding
ENCODING_PARAM="-Dfile.encoding=UTF-8"

# 删除并备份
bakfile(){
        # 提示
        echo "$UP_JARFILE 正在备份中..."

        # 登录
        ssh -Tq -o 'StrictHostKeyChecking=no' root@${UP_SVR_IP} << EOFBAK
        # 判断目录
        if [ ! -d $UP_DIR ];then
                echo "${UP_DIR} is  not exist"
                mkdir -p ${UP_DIR}
                exit 1
        fi
        # 判断文件
        cd $UP_DIR
        if [ ! -f ${UP_JARFILE} ];then
                echo "${UP_JARFILE} is not exist"
                exit 2
        fi

        # 备份
        tar -czf ${UP_JARFILE}.${CUR_TIME}.tar.gz *.jar

        # 删除
        ls -lt |grep $UP_JARFILE |grep -v tar.gz |awk 'NR>1 {print \$NF}' | xargs rm -rf

        # 保留10个版本
        ls -lt |grep ${UP_JARFILE}  |grep tar.gz |awk 'NR>10 {print \$NF}' |xargs rm -rf

        # 提示
        echo "$UP_JARFILE 备份已完成!"
EOFBAK
}


# 传输编译文件
upfile(){
        # 删除临时文件
        cd $DIR_TMP && ls -l |grep jar |awk '{print $NF}' |xargs rm -rf

        # 拷贝到临时目录
        find ${DIST_DIR} -name '*.jar' |grep -vE 'xxx-common|xxx-api' |xargs -i cp {} ${DIR_TMP}

        # 传指定服务器
        cd ${DIR_TMP} && echo "${UP_JARFILE} 正在等待上传,请稍后..."
        [ -f ${UP_JARFILE} ] && scp -o StrictHostKeyChecking=no  ${DIR_TMP}/${UP_JARFILE}  root@${UP_SVR_IP}:${UP_DIR} &>/dev/null

        # 检查
        [ $? -eq 0 ] && echo "${UP_JARFILE} 已上传成功!"
}


# 部署
deploy() {
        # 登录
        ssh -Tq -o 'StrictHostKeyChecking=no' root@${UP_SVR_IP} << EOFSSH
        cd $UP_DIR

        # 查杀进程
        ps -ef | grep ${UP_JARFILE} | grep -v grep | awk -F ' ' '{print \$2}' |xargs -r kill -9
        if [ $? -eq 0 ]; then
                        echo "${UP_JARFILE} 已杀成功!"
                else
                        echo "${UP_JARFILE} kill失败!"
        fi

        # 发布
        [ ! -f ${UP_JARFILE} ] && echo "failure: ${UP_JARFILE} 包不存在,请检查上传情况!" && exit 1
        nohup java -server $MEM_OPTS $ENCODING_PARAM -jar ${UP_DIR}/${UP_JARFILE} --spring.profiles.active=sit >/dev/null 2>&1 &
        if [ $? -eq 0 ]; then
                        echo "${UP_JARFILE} 已发布成功!"
                else
                        echo "${UP_JARFILE} 发布失败!"
        fi
        exit 0
EOFSSH
}
上一篇下一篇

猜你喜欢

热点阅读