一、java -jar 方式运行项目
重启Java项目通常意味着你需要先停止当前运行的Java进程,然后再次启动它。下面是在CentOS上执行这些步骤的一种常见方法:
停止Java进程
-
找到Java进程的PID:
使用
ps
命令配合grep
来查找运行中的Java进程的PID(进程ID)。ps aux | grep 'java -jar'
这会列出所有Java进程,你需要找到对应你的jar文件的进程。
-
杀掉Java进程:
使用
kill
命令来停止该Java进程,将<PID>
替换为实际的进程ID。kill <PID>
如果
kill
命令没有停止该进程,可以尝试使用更强制的命令:kill -9 <PID>
启动Java进程
在成功停止Java进程后,你可以使用java -jar
命令重新启动你的项目。如果你希望在后台运行该进程,并将日志输出到文件中,可以使用以下命令:
nohup java -jar /changyou/mfefficiencycontrol-backend-1.0.0.jar > /changyou/develop/logs/logfile.log 2>&1 &
nohup java -jar /changyou/blog-api-1.0.0.jar > /changyou/develop/logs/blog-api-logfile.log 2>&1 &
这里的nohup
命令会防止进程在终端关闭时被终止,&
会将进程放到后台运行。日志文件会将标准输出和错误输出都重定向到指定的日志文件中。
请确保将/path/to/your/application.jar
替换为你的jar文件的实际路径,以及将/path/to/logfile.log
替换为你希望输出日志的文件路径。
自动化脚本
如果你需要频繁地进行这个操作,可以考虑编写一个简单的shell脚本来自动化这个过程:
#!/bin/bash
# 找到并杀掉旧的Java进程
PID=$(ps aux | grep 'java -jar' | grep -v grep | awk '{print $2}')
if [ -n "$PID" ]; then
echo "Stopping Java process with PID: $PID"
kill $PID
# 等待进程完全停止
while ps -p $PID > /dev/null; do sleep 1; done
fi
# 启动新的Java进程
echo "Starting Java application..."
nohup java -jar /path/to/your/application.jar > /path/to/logfile.log 2>&1 &
echo "Java application started with new PID: $!"
确保将脚本中的路径替换为实际的jar文件和日志文件路径。保存这个脚本,给它执行权限:
chmod +x /path/to/your/script.sh
之后,你就可以通过运行这个脚本来重启你的Java项目了。
二、失败后自动重启
要优化这个命令以确保在 Java 应用程序失败后自动重启,可以使用一个简单的 shell 脚本来实现。这个脚本会监控 Java 应用程序的状态,如果它退出或崩溃,脚本会重新启动它。
以下是一个示例脚本,该脚本会无限循环地运行你的 Java 应用程序,并在它退出后重新启动:
#!/bin/bash
# 定义一些变量
JAR_PATH="/changyou/blog-api-1.0.0.jar"
LOG_PATH="/changyou/develop/logs/blog-api-logfile.log"
# 无限循环,确保应用程序在退出后自动重启
while true; do
echo "Starting Java application..."
nohup java -jar $JAR_PATH > $LOG_PATH 2>&1 &
JAVA_PID=$!
# 等待 Java 应用程序退出
wait $JAVA_PID
# 打印重启信息
echo "Java application exited with status $?. Restarting..."
# 等待几秒钟再重启(可选)
sleep 5
done
使用步骤:
-
创建脚本文件:
创建一个新的脚本文件,例如start_blog_api.sh
:nano start_blog_api.sh
粘贴上述脚本内容:
将上述脚本内容粘贴到start_blog_api.sh
文件中。保存并退出编辑器:
按Ctrl + X
,然后按Y
保存并退出。-
赋予脚本执行权限:
使脚本可执行:chmod +x start_blog_api.sh
-
运行脚本:
运行这个脚本来启动 Java 应用程序并确保它在失败后自动重启:./start_blog_api.sh
说明:
- 该脚本使用
while true
无限循环来确保 Java 应用程序在退出后自动重启。 -
nohup
命令用于在后台运行 Java 应用程序,并将输出重定向到指定的日志文件。 -
wait
命令用于等待 Java 应用程序进程退出。 - 当 Java 应用程序退出时,脚本会打印退出状态并等待 5 秒钟(可选)后重新启动应用程序。
通过这个脚本,你可以确保你的 Java 应用程序在任何情况下都会自动重启,从而提高其可靠性和可用性。
喜欢的朋友记得点赞、收藏、关注哦!!!