在 Linux 中优雅地启动与停止 Spring Boot 项目

本文将介绍在 Linux 系统中如何优雅地启动和停止 Spring Boot 项目。使用 nohupscreen 以及 systemd 的方法。每种方法都有其优势,选择哪种方法取决于你的具体需求和使用场景。

1. 使用 nohup 后台运行 Spring Boot 项目

首先,将 Spring Boot 项目打包成 JAR 文件。根据你使用的构建工具执行以下命令:

Maven 项目:

mvn clean package

Gradle 项目:

gradle clean build

接着,使用 nohup 命令启动项目,并将输出重定向到日志文件:

nohup java -jar /path/to/your-spring-boot-app.jar > /path/to/your-log-file.log 2>&1 &

/path/to/your-spring-boot-app.jar 是你的 Spring Boot 项目生成的 JAR 文件路径,/path/to/your-log-file.log 是你希望存放日志文件的路径。

现在,Spring Boot 项目将作为后台进程运行,不受终端关闭的影响。

优雅地停止运行

查找 Spring Boot 项目的进程 ID,使用以下命令:

ps -ef | grep your-spring-boot-app.jar

找到进程 ID(通常是第二列)。

使用以下命令发送 SIGTERM 信号(信号 15)来优雅地停止 Spring Boot 项目:

kill -15 <process-id>

这里,<process-id> 是你在第一步中找到的进程 ID。

发送 SIGTERM 信号允许 Spring Boot 项目执行清理操作,例如关闭数据库连接、释放资源等。这样可以确保 Spring Boot 项目优雅地停止。

2. 使用 screen 后台运行 Spring Boot 项目

screen 是一个用于在多个进程间切换的终端复用器。首先,确保你的系统已经安装了 screen。如果没有,可以使用以下命令安装:

对于基于 Debian 的系统(如 Ubuntu):

sudo apt-get install screen

对于基于 RHEL 的系统(如 CentOS):

sudo yum install screen

安装完毕后,使用 screen 创建一个新的会话:

screen -S your-session-name

在新创建的会话中,启动你的 Spring Boot 项目。接着,按下 Ctrl + A,然后按下 D,将会话与当前终端分离。这样你可以关闭终端,Spring Boot 项目会继续在后台运行。

如果你想重新连接到之前的会话,可以使用以下命令:

screen -r your-session-name

3. 使用 systemd 后台运行 Spring Boot 项目

systemd是现代 Linux 系统中的默认初始化系统。通过创建一个 systemd 服务,你可以将 Spring Boot 项目作为后台进程运行,并可以方便地管理它。

首先,创建一个新的 systemd 配置文件,例如 /etc/systemd/system/your-spring-boot-app.service,并使用以下模板填充内容:

[Unit]
Description=Your Spring Boot Application
After=syslog.target network.target

[Service]
User=your-user
ExecStart=/usr/bin/java -jar /path/to/your-spring-boot-app.jar
SuccessExitStatus=143
Restart=always

[Install]
WantedBy=multi-user.target

注意替换 your-user/path/to/your-spring-boot-app.jar 和服务描述。

然后,执行以下命令,以便 systemd 识别新服务:

sudo systemctl daemon-reload

接下来,启动你的 Spring Boot 项目:

sudo systemctl start your-spring-boot-app.service

要开启自动启动,请运行:

sudo systemctl enable your-spring-boot-app.service

要查看 Spring Boot 项目的状态和日志,请分别执行:

sudo systemctl status your-spring-boot-app.service
sudo journalctl -u your-spring-boot-app.service -f

优雅地停止运行

使用以下命令优雅地停止 Spring Boot 项目:

sudo systemctl stop your-spring-boot-app.service

这里,your-spring-boot-app.service 是你为 Spring Boot 项目创建的 systemd 服务文件名。

当你使用 systemctl stop 命令时,systemd 会向 Spring Boot 项目发送 SIGTERM 信号。这允许 Spring Boot 项目执行清理操作,例如关闭数据库连接、释放资源等。这样可以确保 Spring Boot 项目优雅地停止。

要查看 Spring Boot 项目的状态,请执行:

sudo systemctl status your-spring-boot-app.service

这将显示服务的当前状态,包括是否已停止。

总结

本文介绍了如何在 Linux 系统中使用 nohupscreensystemd 后台运行并优雅地停止 Spring Boot 项目。每种方法都有其优势,选择哪种方法取决于你的具体需求和使用场景。希望本文能对你在实际项目中部署和管理 Spring Boot 项目有所帮助。如果有什么问题,欢迎评论。

Logo

更多推荐