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

Java启动和停止jar文件sh脚本:自适应文件名方式启停 + 写死环境 启动;自适应文件名方式 + 命令行传参切换环境 启动

Java启动和停止jar文件sh脚本:自适应文件名方式启停 + 写死环境 启动;自适应文件名方式 + 命令行传参切换环境 启动

  • Java启动和停止jar文件sh脚本
    • 1. 自适应文件名方式启停 + 写死环境 启动
      • 启动脚本:start.sh
      • 停止脚本:stop.sh
    • 2. 自适应文件名方式 + 命令行传参切换环境 启动
      • 启动脚本:start.sh
      • 停止脚本:stop.sh(无需变更)

Java启动和停止jar文件sh脚本

APP_PREFIX 需要替换为你的 jar 名称前缀

自适应文件名方式启停 + 写死环境 启动:APP_PROFILE 需要替换为对应的环境参数,来适配项目中的多个配置文件

1. 自适应文件名方式启停 + 写死环境 启动

特性说明

  • 支持版本号变化(如 aaa-2024-05.RELEASE.jar)。
  • 启动自动查找 jar,不需手动修改文件名。

启动脚本:start.sh

启动脚本:直接使用 nohup 启动,不需要指定日志路径,因为你的应用本身已输出日志(例如 logback/log4j)。

#!/bin/bashAPP_PREFIX="aaa"
APP_PROFILE="test"# 自动匹配 jar 文件
JAR_NAME=$(ls ${APP_PREFIX}*.jar 2>/dev/null | head -n 1)if [ -z "$JAR_NAME" ]; thenecho "未找到匹配的 jar 文件(${APP_PREFIX}*.jar)"exit 1
fi# 检查是否已在运行
PID=$(ps -ef | grep "$JAR_NAME" | grep -v grep | awk '{print $2}')
if [ -n "$PID" ]; thenecho "服务已在运行,PID: $PID"exit 0
fi# 启动服务
echo "启动服务:$JAR_NAME,Profile: $APP_PROFILE"
nohup java -jar "$JAR_NAME" --spring.profiles.active="$APP_PROFILE" >/dev/null 2>&1 &sleep 1
NEW_PID=$(ps -ef | grep "$JAR_NAME" | grep -v grep | awk '{print $2}')
if [ -n "$NEW_PID" ]; thenecho "服务启动成功,PID: $NEW_PID"
elseecho "服务启动失败,请检查日志或配置"
fi

停止脚本:stop.sh

停止脚本:通过 ps -ef | grep hotline-data-middleware 获取 PID

#!/bin/bashAPP_PREFIX="aaa"# 获取匹配 jar 名称(任意版本)
JAR_NAME=$(ls ${APP_PREFIX}*.jar 2>/dev/null | head -n 1)
if [ -z "$JAR_NAME" ]; thenecho "未找到匹配的 jar 文件(${APP_PREFIX}*.jar)"exit 1
fi# 查找 PID
PID=$(ps -ef | grep "$JAR_NAME" | grep -v grep | awk '{print $2}')
if [ -z "$PID" ]; thenecho "服务未在运行:$JAR_NAME"exit 0
fiecho "停止服务,PID: $PID"
kill $PIDsleep 2
if ps -p $PID > /dev/null 2>&1; thenecho "进程仍在运行,尝试强制终止..."kill -9 $PID
fiecho "服务已停止"

2. 自适应文件名方式 + 命令行传参切换环境 启动

特性说明

  • 默认环境为 test
  • 支持运行时传参,例如:./start.sh prod./start.sh devsh start.sh prod
  • 如果未传参数,则默认使用 test

启动脚本:start.sh

#!/bin/bashAPP_PREFIX="aaa"
APP_PROFILE=${1:-test}  # 默认环境为 test,支持传参# 自动匹配 jar 文件
JAR_NAME=$(ls ${APP_PREFIX}*.jar 2>/dev/null | head -n 1)if [ -z "$JAR_NAME" ]; thenecho "未找到匹配的 jar 文件(${APP_PREFIX}*.jar)"exit 1
fi# 检查是否已在运行
PID=$(ps -ef | grep "$JAR_NAME" | grep -v grep | awk '{print $2}')
if [ -n "$PID" ]; thenecho "服务已在运行,PID: $PID"exit 0
fiecho "启动服务:$JAR_NAME,Profile: $APP_PROFILE"
nohup java -jar "$JAR_NAME" --spring.profiles.active="$APP_PROFILE" >/dev/null 2>&1 &sleep 1
NEW_PID=$(ps -ef | grep "$JAR_NAME" | grep -v grep | awk '{print $2}')
if [ -n "$NEW_PID" ]; thenecho "服务启动成功,PID: $NEW_PID"
elseecho "服务启动失败,请检查日志或配置"
fi

停止脚本:stop.sh(无需变更)

http://www.xdnf.cn/news/354745.html

相关文章:

  • Spring、SpringMVC、SpringBoot、SpringCloud 联系与区别
  • Java、javax 和 Jakarta有什么区别?
  • 《P1177 【模板】排序》
  • MySQL 性能调优:从执行计划到硬件瓶颈
  • 人力资源管理系统如何有效提高招聘效率?
  • 若依定制pdf生成实战
  • neo4j图数据库基本概念和向量使用
  • AI云防护真的可以防攻击?你的服务器用群联AI云防护吗?
  • ESD防护ANT静电防护方案
  • 学前数学思维:初始行程
  • Docker常见疑难杂症解决指南:深入解析与实战解决方案
  • Spring 框架实战:如何实现高效的依赖注入,优化项目结构?
  • UE5骨骼插槽蓝图
  • 了解Hadoop
  • 互联网大厂Java求职面试:基于AI的实时异常检测系统设计与实现
  • PCB设计时如何选择USART、SPI、I2C
  • 【图像大模型】Stable Diffusion Web UI:深度解析与实战指南
  • 单调栈模版型题目(3)
  • 第20篇:Linux设备驱动程序入门<七>
  • 8b10b编解码仿真
  • 前端自学入门:HTML 基础详解与学习路线指引
  • WebRTC 源码原生端Demo入门-1
  • 【大模型ChatGPT+ArcGIS】数据处理、空间分析、可视化及多案例综合应用
  • 鸿蒙电脑:五年铸剑开新篇,国产操作系统新引擎
  • 机器人运动控制技术简介
  • SpringAI特性
  • Vscode 顶部Menu(菜单)栏消失如何恢复
  • 操作系统面试题(3)
  • C++之运算符重载实例(日期类实现)
  • 云上系统CC攻击如何进行检测与防御?