Bootstrap

java -jar 命令自动重启 Java 项目

一、java -jar 方式运行项目

重启Java项目通常意味着你需要先停止当前运行的Java进程,然后再次启动它。下面是在CentOS上执行这些步骤的一种常见方法:

停止Java进程

  1. 找到Java进程的PID:

    使用ps命令配合grep来查找运行中的Java进程的PID(进程ID)。

    ps aux | grep 'java -jar'
    

    这会列出所有Java进程,你需要找到对应你的jar文件的进程。

  2. 杀掉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

使用步骤:

  1. 创建脚本文件
    创建一个新的脚本文件,例如 start_blog_api.sh

    nano start_blog_api.sh
    
  2. 粘贴上述脚本内容
    将上述脚本内容粘贴到 start_blog_api.sh 文件中。

  3. 保存并退出编辑器
    Ctrl + X,然后按 Y 保存并退出。

  4. 赋予脚本执行权限
    使脚本可执行:

    chmod +x start_blog_api.sh
    
  5. 运行脚本
    运行这个脚本来启动 Java 应用程序并确保它在失败后自动重启:

    ./start_blog_api.sh
    

说明:

  • 该脚本使用 while true 无限循环来确保 Java 应用程序在退出后自动重启。
  • nohup 命令用于在后台运行 Java 应用程序,并将输出重定向到指定的日志文件。
  • wait 命令用于等待 Java 应用程序进程退出。
  • 当 Java 应用程序退出时,脚本会打印退出状态并等待 5 秒钟(可选)后重新启动应用程序。

通过这个脚本,你可以确保你的 Java 应用程序在任何情况下都会自动重启,从而提高其可靠性和可用性。

最后编辑于:2024-10-01 17:52:47


喜欢的朋友记得点赞、收藏、关注哦!!!

;