首页 > 系统相关 >简单可靠的SpringBoot Jar包启动和更新的Shell脚本

简单可靠的SpringBoot Jar包启动和更新的Shell脚本

时间:2024-09-04 13:04:03浏览次数:11  
标签:Shell SpringBoot Jar jar update echo start new

能用脚本执行,就不用手动 nohup java -jar啦。

1.参数说明

最终代码实现如下,支持四个参数:
● operation:start-启动新包 / update-更新包
● env_para:指定使用哪个配置文件,如 test / prod / dev 等
● new_jar_package_name:新包的名称,这里必须要求 脚本的位置 在 新,旧包的同一目录下。
● old_jar_package_name::旧包的名称,要求同上

2.shell脚本

# !/bin/bash

# 检查命令行传入的参数
if [ -z "$1" ]; then
    echo "你必须输入操作类型(start 或 update)"
    exit 1
fi

# 检查新包的名称
if [ "$1" = "start" ] || [ "$1" = "update" ]; then
    if [ -z "$2" ]; then
        echo "你必须输入新的Jar包名称"
        exit 1
    fi
fi

operation=$1
env_para=$2
new_jar=$3
old_jar=$4

case $operation in
    start)
        # 启动新的Jar包
        source /etc/profile
        nohup java -jar -Duser.timezone=GMT+8 -Dspring.profiles.active=$env_para ./$new_jar >/dev/null 2>&1 &
        echo "新的Jar包已启动: $new_jar"
        ;;
    
    update)
        echo "更新新版本中..."
        
        # 查找老Jar包的进程并杀死它
        echo "正在终止旧的Jar包进程..."
        process_ids=$(pgrep -f $old_jar)
        
        if [ -n "$process_ids" ]; then
            for pid in $process_ids; do
                echo "杀死进程 $pid"
                sudo kill -9 $pid
            done
        fi
        # 等待4秒 
        echo "等待4秒"
        sleep 4
        
        # 启动新的Jar包
        source /etc/profile
        nohup java -jar -Duser.timezone=GMT+8 -Dspring.profiles.active=$env_para ./$new_jar >/dev/null 2>&1 &
        echo "新Jar包已启动: $new_jar"
        ;;
    
    *)
        echo "未知操作: $operation"
        echo "使用方法: ./deploy.sh [test|prod] [start|update] [new_jar_name] [old_jar_name_for_update]"
        exit 1
        ;;
esac

3.使用须知

脚本在复制到新环境之后,需要 chmod +x deploy.sh赋予一下执行权限

4.编写此类注意的坑

在写脚本的时候注意以下几点:
● 本脚本有很多来自通义大模型的帮助,很多复制内容,会出现文件从 Windows环境复制到Linux环境,可能存在文件换行符不匹配的情况,需要安装 dos2unix命令进行转换;
● 必须 循环遍历 process_ids 中的 pid,然后依次 kill;
● 必须在 kill 之后 sleep 4 和 source /etc/profile,否则只能正确kill 旧包,但是无法启动新包。这个坑只有亲身经历过才知道有多坑。

以上,如有帮助,请一键三联,如有问题,欢迎留言沟通

标签:Shell,SpringBoot,Jar,jar,update,echo,start,new
From: https://www.cnblogs.com/it-bt/p/18396237

相关文章

  • 基于Java+SpringBoot+Mysql在线众筹系统功能设计与实现五
    一、前言介绍:1.1项目摘要随着互联网的普及和人们消费观念的转变,众筹作为一种创新的融资方式,逐渐受到社会各界的关注和青睐。它打破了传统融资模式的限制,为初创企业、艺术家、公益项目等提供了更为灵活和便捷的融资渠道。因此,开发众筹系统旨在满足这一市场需求,促进创新项......
  • 基于Java+SpringBoot+Mysql在线众筹系统功能设计与实现六
    一、前言介绍:1.1项目摘要随着互联网的普及和人们消费观念的转变,众筹作为一种创新的融资方式,逐渐受到社会各界的关注和青睐。它打破了传统融资模式的限制,为初创企业、艺术家、公益项目等提供了更为灵活和便捷的融资渠道。因此,开发众筹系统旨在满足这一市场需求,促进创新项......
  • 基于Java+SpringBoot+Mysql在线聊天系统功能设计与实现一
    一、前言介绍:1.1项目摘要随着互联网技术的飞速发展,人们的社交需求日益多样化。传统的面对面交流方式已经无法满足现代人随时随地沟通的需求。因此,开发一个高效、便捷的在线聊天系统成为了满足人们社交需求的重要途径。随着即时通讯技术的不断成熟,如WebSocket、HTTP/2等协......
  • springboot+vue英语学习激励系统【程序+论文+开题】计算机毕业设计
    系统程序文件列表开题报告内容研究背景在全球化日益加深的今天,英语作为国际交流的重要工具,其学习需求日益迫切。然而,传统英语学习方式往往存在动力不足、效果难以持续等问题,导致学生兴趣缺失,学习效率低下。随着信息技术的飞速发展,个性化、互动化的学习模式逐渐成为可能。因......
  • springboot+vue小天鹅酒店月子会所管理【程序+论文+开题】计算机毕业设计
    系统程序文件列表开题报告内容研究背景随着现代家庭对母婴健康重视程度的不断提升,月子会所作为集专业护理、营养膳食、心理调适及育儿指导于一体的综合性服务机构,正逐渐成为产后家庭的首选。小天鹅酒店凭借其优越的地理位置、完善的硬件设施与良好的品牌口碑,转型涉足月子会......
  • springboot+vue智慧图书馆图书推荐系统【程序+论文+开题】计算机毕业设计
    系统程序文件列表开题报告内容研究背景随着信息技术的飞速发展,图书馆作为知识传播与服务的核心机构,正逐步向智慧化转型。传统图书馆在资源管理和用户服务方面面临诸多挑战,如图书信息更新不及时、读者需求匹配度低、借阅流程繁琐等。特别是在大数据时代,如何有效挖掘并利用海......
  • springboot+vue学生对老师评分_意见分反馈网站【程序+论文+开题】计算机毕业设计
    系统程序文件列表开题报告内容研究背景在教育领域中,学生评教作为教学质量监控与提升的重要环节,其反馈的及时性与有效性对于促进教师专业发展、优化课程设置及教学方法改革具有重要意义。然而,传统的学生评教方式往往受限于纸质问卷、面对面访谈等形式,存在数据收集效率低下、......
  • Java SpringBoot实战:如何高效设计家电销售系统,vue助你实现,毕业设计新思路!
    ✍✍计算机毕业编程指导师**⭐⭐个人介绍:自己非常喜欢研究技术问题!专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。⛽⛽实战项目:有源码或者技术上的问题欢迎在评论区一起讨论交流!⚡⚡Java、Python、微信小程序、大数据实战项目集⚡⚡......
  • Java SpringBoot实战教程,手把手教你打造店铺租赁租凭平台
    ✍✍计算机毕业编程指导师**⭐⭐个人介绍:自己非常喜欢研究技术问题!专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。⛽⛽实战项目:有源码或者技术上的问题欢迎在评论区一起讨论交流!⚡⚡Java、Python、微信小程序、大数据实战项目集⚡⚡......
  • 如何用Java SpringBoot+Vue搭建教学平台?中小学资源管理一步到位
    ✍✍计算机毕业编程指导师**⭐⭐个人介绍:自己非常喜欢研究技术问题!专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。⛽⛽实战项目:有源码或者技术上的问题欢迎在评论区一起讨论交流!⚡⚡Java、Python、微信小程序、大数据实战项目集⚡⚡......