当前位置: 首页 > news >正文

springboot项目部署脚本

Springboot部署脚本

该脚本可用于jenkins自动执行,具有以下功能

  1. 适配所有以内嵌tomcat容器springboot项目jar包
  2. 可根据参数选择环境,基于profiles
  3. 可自动识别并关闭已存在进程
  4. 第一个参数是指定jar包所在绝对路径(该路径下必须有且仅有一个.jar文件) 第二个参数是spring.profiles标识

用法 sh deploy.sh /app/yourdir/ dev

#!/bin/bash# 部署Spring Boot应用的Shell脚本# 检查参数是否正确
if [ $# -lt 1 ] || [ $# -gt 2 ]; thenecho "用法: $0 <应用目录> [环境名称]"exit 1
fiAPP_DIR=$1# 检查应用目录是否存在
if [ ! -d "$APP_DIR" ]; thenecho "错误:应用目录不存在:$APP_DIR"exit 1
fi
# 查找目录中的JAR文件
JAR_FILES=("$APP_DIR"/*.jar)
JAR_COUNT=${#JAR_FILES[@]}
echo "找到Jar包 $JAR_FILES"# 验证JAR文件数量
if [ $JAR_COUNT -eq 0 ]; thenecho "错误:在目录 $APP_DIR 中未找到任何JAR文件。"exit 1
elif [ $JAR_COUNT -gt 1 ]; thenecho "错误:在目录 $APP_DIR 中找到多个JAR文件,请确保只有一个。"echo "找到的JAR文件:"printf '%s\n' "${JAR_FILES[@]}"exit 1
fiAPP_JAR=${JAR_FILES[0]}
APP_NAME=$(basename $APP_JAR)
echo "准备执行jar包 $APP_NAME "
PROFILE=${2:-""}
# 函数:停止正在运行的应用
stop_application() {echo "正在检查应用是否正在运行..."# 使用jps查找包含指定jar包名称的Java进程jps -l | grep "$APP_NAME" | while read pid appdoecho "正在停止应用 [PID: $pid, APP: $app]"kill $pid# 等待最多5秒直到进程终止for i in {1..5}; doif ps -p $pid > /dev/null; thensleep 1elsebreakfidone# 如果仍然存在则强制终止if ps -p $pid > /dev/null; thenecho "强制终止应用 [PID: $pid]"kill -9 $pidfidone
}# 函数:启动应用
start_application() {if [ -n "$PROFILE" ]; thenJAVA_OPTS="--spring.profiles.active=$PROFILE"elseJAVA_OPTS=""fiecho "准备执行jar包 $APP_JAR"echo "正在启动应用,当前运行环境为 [$PROFILE]"nohup java -jar $APP_JAR $JAVA_OPTS  > /dev/null 2>&1 &echo "应用已启动,输出重定向到nohup.out"
}# 主执行流程
stop_application
# 等待2秒确保进程完全停止
sleep 2
start_application# 验证启动结果
sleep 10
echo "启动验证:"
jps -l | grep "$APP_NAME" | while read npid napp
doecho "应用启动成功 [PID: $npid,APP: $napp]"
done

相关文章:

springboot项目部署脚本

Springboot部署脚本 该脚本可用于jenkins自动执行&#xff0c;具有以下功能 适配所有以内嵌tomcat容器springboot项目jar包可根据参数选择环境&#xff0c;基于profiles可自动识别并关闭已存在进程第一个参数是指定jar包所在绝对路径(该路径下必须有且仅有一个.jar文件) 第二…...

黑马Java面试教程_P5_微服务

系列博客目录 文章目录 系列博客目录1.引言2.Spring Cloud2.1 Spring Cloud 5大组件有哪些?面试文稿 2.2 服务注册和发现是什么意思?Spring Cloud 如何实现服务注册发现?面试文稿 2.3 我看你之前也用过nacos、你能说下nacos与eureka的区别?面试文稿 2.4 你们项目负载均衡如…...

使用Fuse-DFS挂载文件存储 HDFS-后端存储ceph

1. 编译环境准备 yum install cmake3 ln -s /usr/bin/cmake3 /usr/bin/cmake yum install gcc-c安装挂载依赖 yum -y install fuse fuse-devel fuse-libs执行以下命令&#xff0c;载入FUSE模块 modprobe fuse2. 下载源码包 hadoop-3.3.4-src.tar.gz解压后执行以下命令 打开…...

生成式AI项目的生命周期

总结自视频&#xff08;吴恩达大模型入门课&#xff09;&#xff1a;9_13_generative-ai-project-lifecycle_哔哩哔哩_bilibili 生成周期如下图&#xff0c;包含四部分&#xff1a;任务范围&#xff08;Scope&#xff09;&#xff0c;选择大模型&#xff08;Select&#xff09…...

SOC-ATF 安全启动BL1流程分析(1)

一、ATF 源码下载链接 1. ARM Trusted Firmware (ATF) 官方 GitHub 仓库 GitHub 地址: https://github.com/ARM-software/arm-trusted-firmware 这是 ATF 的官方源码仓库&#xff0c;包含最新的代码、文档和示例。 下载方式&#xff1a; 使用 Git 克隆仓库&#xff1a; git…...

游戏引擎学习第127天

仓库:https://gitee.com/mrxiao_com/2d_game_3 为本周设定阶段 我们目前的渲染器已经实现了令人惊讶的优化&#xff0c;经过过去两周的优化工作后&#xff0c;渲染器在1920x1080分辨率下稳定地运行在60帧每秒。这个结果是意料之外的&#xff0c;因为我们没有预计会达到这样的…...

Grafana使用日志7--开启Sigv4

背景 在Grafana中&#xff0c;有些data source是需要开启sigv4认证的&#xff0c;例如OpenSearch&#xff0c;这个配置项默认是关闭的&#xff0c;这里我们介绍一下怎么开启 步骤 传统方式 如果我们想在Grafana中开启sigv4认证&#xff0c;我们需要在grafana.ini中修改一个…...

UWB人员定位:精准、高效、安全的智能管理解决方案

在现代企业管理、工业生产、安全监测等领域&#xff0c;UWB&#xff08;超宽带&#xff09;人员定位系统正逐步成为高精度定位技术的首选。相较于传统的GPS、Wi-Fi、蓝牙等定位方式&#xff0c;UWB具备厘米级高精度、低延迟、高安全性、抗干扰强等突出优势&#xff0c;能够实现…...

二、QT和驱动模块实现智能家居----2、编译支持QT的系统

因为我们的Linux内核文件不支持QT系统&#xff08;当然如果你的支持&#xff0c;完全跳过这篇文章&#xff09;&#xff0c;所以我们要从网上下载很多软件包&#xff0c;这里直接用百问网的软件包&#xff0c;非常方便。 一&#xff1a;Ubuntu 配置 1 设置交叉编译工具链 以…...

Windows上使用go-ios实现iOS17自动化

前言 在Windows上运行iOS的自动化&#xff0c;tidevice对于iOS17以上并不支持&#xff0c;原因是iOS 17 引入新通信协议 ‌RemoteXPCQUIC‌&#xff0c;改变了 XCUITest 的启动方式。 一、go-ios的安装 1、安装命令&#xff1a;npm i go-ios 2、安装完成后输入命令which io…...

越南SD-WAN跨境组网专线助力制造业访问国内 OA、ERP系统难题

近年来&#xff0c;随着全球制造业格局的不断调整&#xff0c;越来越多的制造业企业选择将工厂建立在越南。越南凭借其相对低廉的劳动力成本、优惠的政策以及优越的地理位置&#xff0c;吸引了大量的外资制造业企业入驻。然而&#xff0c;这些在越南设厂的企业却面临着一个棘手…...

【广度优先搜索】图像渲染 岛屿数量

文章目录 733. 图像渲染解题思路&#xff1a;BFS200. 岛屿数量解题思路&#xff1a;广度优先遍历 733. 图像渲染 733. 图像渲染 ​ 有一幅以 m x n 的二维整数数组表示的图画 image &#xff0c;其中 image[i][j] 表示该图画的像素值大小。 ​ 你也被给予三个整数 sr , sc 和…...

Rust学习总结之-枚举

枚举是一个很多语言都有的功能&#xff0c;不过不同语言中其功能各不相同但是要表达的意思是一致的&#xff0c;枚举就是对于一个事物可以穷举出所有可能得值。比如说人的性别就可以用枚举&#xff0c;男人和女人两种。下面我们来学习Rust中的枚举。 一&#xff1a;枚举定义 …...

Linux下用route命令修改默认网关,不用重启网络

在Linux系统中&#xff0c;可以使用route命令来修改默认网关&#xff0c;而不需要重启网络。 下面是使用route命令修改默认网关的步骤&#xff1a; 打开终端窗口&#xff0c;以root用户或拥有sudo权限的用户身份登录。 使用以下命令查看当前的路由表信息&#xff1a; route…...

Datawhale 数学建模导论二 笔记5 多模数据与智能模型

主要涉及到的知识点有&#xff1a; 数字图像处理与计算机视觉 计算语言学与自然语言处理 数字信号处理与智能感知 10.1 数字图像处理与计算机视觉 视觉信息是我们第一种非常规的数据模式&#xff0c;在Python当中可以使用opencv处理数字图像&#xff0c;并提取出视觉特征用…...

【练习】【贪心】力扣1005. K 次取反后最大化的数组和

题目 1005 K 次取反后最大化的数组和 给你一个整数数组 nums 和一个整数 k &#xff0c;按以下方法修改该数组&#xff1a; 选择某个下标 i 并将 nums[i] 替换为 -nums[i] 。 重复这个过程恰好 k 次。可以多次选择同一个下标 i 。 以这种方式修改数组后&#xff0c;返回数组 可…...

python学习七

作用域&#xff1a; 在编程语言中定义变量的可见性和生命周期的规则集合。它决定了在程序中的哪些位置可以访问或引用某个变量 1.全局作用域&#xff1a; 全局作用域是指在整个程序中都可见的变量。在函数外 部定义的变量通常具有全局作用域&#xff0c;在任何地方都可以访问和…...

安全运营的“黄金4小时“:如何突破告警疲劳困局

在当今复杂多变的网络安全环境中&#xff0c;安全团队面临着前所未有的挑战。尤其是面对高级持续性威胁&#xff08;APT&#xff09;时&#xff0c;最初的“黄金4小时”成为决定成败的关键窗口。在这段时间内&#xff0c;快速而准确地响应可以极大地降低损失&#xff0c;然而&a…...

本地部署Embedding模型API服务的实战教程

大家好,我是herosunly。985院校硕士毕业,现担任算法研究员一职,热衷于大模型算法的研究与应用。曾担任百度千帆大模型比赛、BPAA算法大赛评委,编写微软OpenAI考试认证指导手册。曾获得阿里云天池比赛第一名,CCF比赛第二名,科大讯飞比赛第三名。授权多项发明专利。对机器学…...

数据结构:二叉树的链式结构及相关算法详解

目录 一.链式结构的实现 1.二叉树结点基本结构&#xff0c;初始化与销毁&#xff1a; 二.链式结构二叉树的几种遍历算法 1.几种算法的简单区分&#xff1a; 2.前序遍历&#xff1a; 3.中序遍历&#xff1a; 4.后序遍历&#xff1a; 5.层序遍历&#xff08;广度优先遍历B…...

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明&#xff1a;假设每台服务器已…...

挑战杯推荐项目

“人工智能”创意赛 - 智能艺术创作助手&#xff1a;借助大模型技术&#xff0c;开发能根据用户输入的主题、风格等要求&#xff0c;生成绘画、音乐、文学作品等多种形式艺术创作灵感或初稿的应用&#xff0c;帮助艺术家和创意爱好者激发创意、提高创作效率。 ​ - 个性化梦境…...

电脑插入多块移动硬盘后经常出现卡顿和蓝屏

当电脑在插入多块移动硬盘后频繁出现卡顿和蓝屏问题时&#xff0c;可能涉及硬件资源冲突、驱动兼容性、供电不足或系统设置等多方面原因。以下是逐步排查和解决方案&#xff1a; 1. 检查电源供电问题 问题原因&#xff1a;多块移动硬盘同时运行可能导致USB接口供电不足&#x…...

什么是库存周转?如何用进销存系统提高库存周转率?

你可能听说过这样一句话&#xff1a; “利润不是赚出来的&#xff0c;是管出来的。” 尤其是在制造业、批发零售、电商这类“货堆成山”的行业&#xff0c;很多企业看着销售不错&#xff0c;账上却没钱、利润也不见了&#xff0c;一翻库存才发现&#xff1a; 一堆卖不动的旧货…...

ETLCloud可能遇到的问题有哪些?常见坑位解析

数据集成平台ETLCloud&#xff0c;主要用于支持数据的抽取&#xff08;Extract&#xff09;、转换&#xff08;Transform&#xff09;和加载&#xff08;Load&#xff09;过程。提供了一个简洁直观的界面&#xff0c;以便用户可以在不同的数据源之间轻松地进行数据迁移和转换。…...

企业如何增强终端安全?

在数字化转型加速的今天&#xff0c;企业的业务运行越来越依赖于终端设备。从员工的笔记本电脑、智能手机&#xff0c;到工厂里的物联网设备、智能传感器&#xff0c;这些终端构成了企业与外部世界连接的 “神经末梢”。然而&#xff0c;随着远程办公的常态化和设备接入的爆炸式…...

CSS设置元素的宽度根据其内容自动调整

width: fit-content 是 CSS 中的一个属性值&#xff0c;用于设置元素的宽度根据其内容自动调整&#xff0c;确保宽度刚好容纳内容而不会超出。 效果对比 默认情况&#xff08;width: auto&#xff09;&#xff1a; 块级元素&#xff08;如 <div>&#xff09;会占满父容器…...

C#学习第29天:表达式树(Expression Trees)

目录 什么是表达式树&#xff1f; 核心概念 1.表达式树的构建 2. 表达式树与Lambda表达式 3.解析和访问表达式树 4.动态条件查询 表达式树的优势 1.动态构建查询 2.LINQ 提供程序支持&#xff1a; 3.性能优化 4.元数据处理 5.代码转换和重写 适用场景 代码复杂性…...

Linux nano命令的基本使用

参考资料 GNU nanoを使いこなすnano基础 目录 一. 简介二. 文件打开2.1 普通方式打开文件2.2 只读方式打开文件 三. 文件查看3.1 打开文件时&#xff0c;显示行号3.2 翻页查看 四. 文件编辑4.1 Ctrl K 复制 和 Ctrl U 粘贴4.2 Alt/Esc U 撤回 五. 文件保存与退出5.1 Ctrl …...

Elastic 获得 AWS 教育 ISV 合作伙伴资质,进一步增强教育解决方案产品组合

作者&#xff1a;来自 Elastic Udayasimha Theepireddy (Uday), Brian Bergholm, Marianna Jonsdottir 通过搜索 AI 和云创新推动教育领域的数字化转型。 我们非常高兴地宣布&#xff0c;Elastic 已获得 AWS 教育 ISV 合作伙伴资质。这一重要认证表明&#xff0c;Elastic 作为 …...