使用systemd管理自动运行spring boot项目的jar包
systemd是目前Linux系统上主要的守护进程管理工具,在启动jar时,我们虽然可以使用nohop来后台运行jar程序,但却不具备systemd那样丰富易用的管理功能
优点有以下几点:
开机启动
后台守护进程
进程管理
首先,我们为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 查看服务状态
版权声明:
本站所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自
最上级!
喜欢就支持一下吧