Spring Boot启动脚本,并且首先尝试停止正在运行的实例(如果存在的话),然后启动新的实例,你可以创建一个如下的脚本:
#!/bin/bash
# 定义JAR包的路径
JAR_PATH="/path/to/yourapp.jar"
# 定义查找JAR包进程时使用的关键字
PROCESS_NAME="$(basename "$JAR_PATH")"
# 查找进程的PID
PID=$(pgrep -f "$PROCESS_NAME")
# 如果进程正在运行,则停止它
if [ -n "$PID" ]; then
echo "正在停止......,Spring Boot应用, PID: $PID"
kill $PID
sleep 5 # 等待进程完全停止
echo "已停止!"
fi
# 检查JAR文件是否存在
if [ ! -f "$JAR_PATH" ]; then
echo "Error: JAR file not found at $JAR_PATH"
exit 1
fi
# 启动JAR包,并将日志输出到控制台
nohup java -jar "$JAR_PATH" &
echo "Spring Boot application 启动完毕!!!"
这个脚本首先会查找与 JAR 文件名匹配的进程,并尝试停止它。然后,它会检查 JAR 文件是否存在,如果存在,则启动应用。
请注意以下几点:
PROCESS_NAME 是通过 basename 命令从 JAR_PATH 中提取的,这样即使 JAR 文件名包含路径信息,也能正确找到对应的进程。
使用了 sleep 5 来确保在尝试启动新实例之前,旧实例已经完全停止。这个等待时间可能需要根据你的应用实际情况进行调整。
nohup 命令用于在后台运行 java -jar 命令,这样即使你关闭了终端,应用也会继续运行。
保存这个脚本为 restart.sh,然后赋予它执行权限:
chmod +x restart.sh
现在,你可以通过运行 ./restart.sh 来重启你的 Spring Boot 应用了。如果应用正在运行,它会首先被停止,然后一个新的实例会被启动。如果应用没有运行,它将直接启动一个新的实例。
网友评论