systemd是目前Linux系统上主要的守护进程管理工具,在启动jar时,我们虽然可以使用nohop来后台运行jar程序,但却不具备systemd那样丰富易用的管理功能

优点有以下几点:

  1. 开机启动

  2. 后台守护进程

  3. 进程管理

首先,我们为jar编写一个启动脚本start.sh

#!/bin/bash
nohup /usr/bin/java -jar -server -Xms256m -Xmx256m -Xloggc:gc.log /opt/cloud/java-cloud-0.0.1.jar > nohup.log 2>&1 &

其中的路径建议使用绝对路径,这样即可以直接使用start.sh运行程序,也可以用systemd来运行这个start.sh脚本作为启动命令

然后,我们编辑一个JavaCloud.service文件,我们一般把它放到`/usr/lib/systemd/system/`下

[Unit]
Description=Java-Cloud Service
Documentation=https://www.mostops.cn

After=network.target

[Service]
Type=forking
User=root
Group=root
KillMode=control-group
WorkingDirectory=/opt/cloud/
ExecStart=/opt/cloud/start.sh
ExecStop=/bin/kill -s QUIT
ExecReload=/bin/kill -s HUP $MAINPID

Restart=on-failure

PrivateTmp=true
TimeoutStartSec=10s

[Install]
WantedBy=multi-user.target

注意,路径使用绝对路径,且应当要设置WorkingDirectory,因为如果我们不去设置这个参数,spring boot项目可能无法正确设置日志、拓展配置文件、证书等等的正确路径。

然后我们依次是命令启动这个程序

# systemctl daemon-reload 重新加载文件
# systemctl enable JavaCloud 设置开机启动命令
# systemctl start JavaCloud 启动服务
# systemctl status JavaCloud 查看服务状态
文章作者: LrMaker
版权声明: 本站所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 最上级
后端 centOS 运维 java
喜欢就支持一下吧