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

发布于:2025-05-10 ⋅ 阅读:(11) ⋅ 点赞:(0)

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

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

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

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

特性说明

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

启动脚本:start.sh

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

#!/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

#!/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

#!/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(无需变更)


网站公告

今日签到

点亮在社区的每一天
去签到