将Java/Python程序注册成Linux系统服务

2025年7月24日 · 55 字 · 1 分钟

我们把我们的程序注册成systemd系统服务,把服务重启和日志交给Linux系统去做的话,这样会方便和很多…

背景

我们平常会写一些自己的程序,把它部署在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