言成言成啊 | Kit Chen's Blog

Centos7配置Jar包自启

一、基于bash

1.1 绘图工具

绘图需安装idea的插件plantUML-Integration

只需要上图一个就可以,别的也不需要装。

1.2 逻辑实现

写了,但是bug比较多,周末再完善。

其实感觉自己实现反而有点鸡肋。

二、基于systemctl

完全依赖于systemctl的好处是,他自己有一套pid守护进程,如果pid释放,自动就会更改该服务的状态。

而自己维护pid文件,存在的问题就比较多。比如,启动了项目,但是此时断电了,好家伙pid还在,不晓得的以为服务还在启动着呢。

比如我的一个统计功能,首先创建一个入口交给systemctl执行,取名entrance

1
2
3
4
5
6
7
8
9
10
#!/usr/bin/env bash
set -e

# 项目jar包的根路径
JAR_FILE=/site/count-for-page/count.jar
LOG_FILE=/site/count-for-page/count.log
# 执行命令,$()相当于``
COMMAND=$(nohup java -jar ${JAR_FILE} >${LOG_FILE} 2>&1 &)

echo ${COMMAND}

创建systemctl服务

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
cat > /usr/lib/systemd/system/count-for-page.service <<EOF
[Unit]
Description=count-for-page
After=network.target

[Service]
Type=forking
ExecStart=/usr/bin/sh /site/count-for-page/entrance
ExecStop=/usr/bin/kill $MAINPID
PrivateTmp=true
# kill按理说,应该返回状态0,但是java比较特殊,返回的是143
SuccessExitStatus=143

[Install]
WantedBy=multi-user.target
EOF

之后就可以进行操作啦

1
systemctl start|stop|restart|enable|disable count-for-page

三、参考致谢

发布:2022-09-02 00:56:40
修改:2022-09-02 01:16:31
链接:https://meethigher.top/blog/2022/auto-jar/
标签:java devops 
付款码 打赏 分享