CentOS7环境下利用systemctl管理jfinal-undertow服务

原帖链接http://www.qiuzhihui.cn/article/articleDetail/21


PS:以下命令在root用户下执行

1 编写xxx.service

使用vim命令新建一个服务文件

vim /usr/lib/systemd/system/xxx.service

/usr/lib/systemd/system/该目录存放Linux系统所有的服务

内容如下:

[Unit]
Description=xxx.service
After=network.target

[Service]
Type=forking
ExecStart=/xxx/jfinal.sh
startExecReload=/xxx/jfinal.sh
restartExecStop=/xxx/jfinal.sh
stopSuccessExitStatus=143

[Install]
WantedBy=multi-user.target

Description为服务描述,可任意填写,/xxx为自己的项目路径,一定要使用绝对路径

关于systemd.service的详解,参见systemd.service 中文手册
关于为什么要设置SuccessExitStatus=143,参见
1.Exit codes 【关键语:linux 系统调用 exit(int status) 的退出值的说明 】
2.Services remain in failed state after stopped with systemctl

2 修改jfinal.sh

将function start()内的java命令使用绝对路径,比如,当jdk安装在/usr/local/jdk/时,则如下示例

如果使用输出日志,则输出日志也需要使用绝对路径

3 开启服务

# 重载系统服务
systemctl daemon-reload
# 设置开机自启
systemctl enable xxx.service

4 其他服务控制

# 启动服务
systemctl start xxx.service
# 关闭服务
systemctl stop xxx.service
# 重启服务
systemctl restart xxx.service

完成,收工


评论区

opal

2019-09-28 13:54

centos7么,用docker运行更好

chcode

2019-09-28 14:11

话说centos6呢

Max_Qiu

2019-09-28 14:29

@chcode 这就不清楚了。。。。

Max_Qiu

2019-09-28 14:30

@opal 相对于docker而已,这个比较简单了,而且用docker的话,又要学一堆命令

zzutligang

2019-09-29 14:00

还是这个有用。就是不喜欢docker。