Java启动和停止jar文件sh脚本:自适应文件名方式启停 + 写死环境 启动;自适应文件名方式 + 命令行传参切换环境 启动
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 dev
、sh 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