美文网首页
shell编程中之 nohup 必须手动 CTRL + C 退出

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

作者: liurongming | 来源:发表于2021-08-10 10:28 被阅读0次

    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
    }
    

    相关文章

      网友评论

          本文标题:shell编程中之 nohup 必须手动 CTRL + C 退出

          本文链接:https://www.haomeiwen.com/subject/sksxbltx.html