背景
我们平常会写一些自己的程序,把它部署在linux操作系统上是大多数人的选择。但是一旦我们的服务器重启或者日志文件过大就不便于管理。
如果我们把我们的程序注册成systemd系统服务,把服务重启和日志交给Linux系统去做的话,这样会方便和很多,接下来我会以注册一个Java程序为Linux系统服务为例,演示将我们自己的程序注册成系统服务的步骤。
准备工作
要将我们的java程序注册成系统服务,我们需要准备:
- 程序Jar包
- 编写.service文件
- 设置开机自启、使用systemctl管理服务
在准备好我们的程序包之后,我们需要cd /etc/systemd/system
目录下编写服务文件,下面我给出我的英语学习后端服务english-learn.service
服务文件,仅供参考:
[Unit]
Description=english learn backend service
After=syslog.target network.target
[Service]
Type=simple
User=nobody
Restart=on-failure
RestartSec=5s
ExecStart=/usr/java/jdk1.8.0_351/bin/java -jar /opt/english-learn/english-learn-backend-1.0-SNAPSHOT.jar
[Install]
WantedBy=multi-user.target
/etc/systemd/system
目录可以理解为是Linux操作系统留给我们的自定义服务声明的地方。.service
中我们只需要修改其中的ExecStart
配置就可以直接使用了,把程序启动命令和程序包路径修改为我们自己的。
服务管理
在编写完成/etc/systemd/system/english-learn.service
后,我们在/etc/systemd/system/
目录下重载系统服务:
systemctl daemon-reload
允许服务开机自启:
systemctl enable english-learn
常用命令
执行完服务管理操作后,我们的Jar程序就纳入到系统服务了,我们可以使用systemctl命令去管理服务,下面列出了常用命令:
启动服务:
systemctl start english-learn
查看服务状态:
systemctl status english-learn
停止服务:
systemctl stop english-learn
查看服务日志:
journalctl -xeu english-learn