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

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

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

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

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

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

特性说明

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

启动脚本:start.sh

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

bash 复制代码
#!/bin/bash

APP_PREFIX="aaa"
APP_PROFILE="test"

# 自动匹配 jar 文件
JAR_NAME=$(ls ${APP_PREFIX}*.jar 2>/dev/null | head -n 1)

if [ -z "$JAR_NAME" ]; then
  echo "未找到匹配的 jar 文件(${APP_PREFIX}*.jar)"
  exit 1
fi

# 检查是否已在运行
PID=$(ps -ef | grep "$JAR_NAME" | grep -v grep | awk '{print $2}')
if [ -n "$PID" ]; then
  echo "服务已在运行,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" ]; then
  echo "服务启动成功,PID: $NEW_PID"
else
  echo "服务启动失败,请检查日志或配置"
fi

停止脚本:stop.sh

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

bash 复制代码
#!/bin/bash

APP_PREFIX="aaa"

# 获取匹配 jar 名称(任意版本)
JAR_NAME=$(ls ${APP_PREFIX}*.jar 2>/dev/null | head -n 1)
if [ -z "$JAR_NAME" ]; then
  echo "未找到匹配的 jar 文件(${APP_PREFIX}*.jar)"
  exit 1
fi

# 查找 PID
PID=$(ps -ef | grep "$JAR_NAME" | grep -v grep | awk '{print $2}')
if [ -z "$PID" ]; then
  echo "服务未在运行:$JAR_NAME"
  exit 0
fi

echo "停止服务,PID: $PID"
kill $PID

sleep 2
if ps -p $PID > /dev/null 2>&1; then
  echo "进程仍在运行,尝试强制终止..."
  kill -9 $PID
fi

echo "服务已停止"

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

特性说明

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

启动脚本:start.sh

bash 复制代码
#!/bin/bash

APP_PREFIX="aaa"
APP_PROFILE=${1:-test}  # 默认环境为 test,支持传参

# 自动匹配 jar 文件
JAR_NAME=$(ls ${APP_PREFIX}*.jar 2>/dev/null | head -n 1)

if [ -z "$JAR_NAME" ]; then
  echo "未找到匹配的 jar 文件(${APP_PREFIX}*.jar)"
  exit 1
fi

# 检查是否已在运行
PID=$(ps -ef | grep "$JAR_NAME" | grep -v grep | awk '{print $2}')
if [ -n "$PID" ]; then
  echo "服务已在运行,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" ]; then
  echo "服务启动成功,PID: $NEW_PID"
else
  echo "服务启动失败,请检查日志或配置"
fi

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

相关推荐
syty202021 分钟前
AST语法树应用于sql检查
java·开发语言·ast
Akshsjsjenjd1 小时前
Nginx反向代理与负载均衡全解析
运维·nginx·负载均衡
Code blocks1 小时前
SpringBoot快速生成二维码
java·spring boot·后端
万笑佛1 小时前
java从word模板生成.doc和.wps文件
java
大厂码农老A2 小时前
P10老板一句‘搞不定就P0’,15分钟我用Arthas捞回1000万资损
java·前端·后端
nlog3n2 小时前
分布式任务事务框架设计与实现方案
java·分布式
熙客2 小时前
分布式调度问题:定时任务
java·分布式·spring cloud
星海穿梭者2 小时前
SQL SERVER 查看锁表
java·服务器·前端
Voyager_42 小时前
Linux服务器NAS挂载:Truenas
linux·运维·服务器