centos systemd方式配置jar开机自启

将后端服务(一个 Java 应用程序)注册为 CentOS 上的 systemd 服务,可以让你方便地管理其启动、停止和重启。以下是详细步骤:

创建 systemd 服务单元文件

创建一个 systemd 服务单元文件,例如 /etc/systemd/system/demo.service:

powershell 复制代码
vim /etc/systemd/system/demo.service

在文件中添加以下内容:

powershell 复制代码
[Unit]
Description=Ruoyi Backend Service
After=network.target

[Service]
User=root
ExecStart=/usr/bin/java -Xms256m -Xmx512m -jar /home/wl_call_center/wl-admin.jar
SuccessExitStatus=143
Restart=on-failure
RestartSec=10s

[Install]
WantedBy=multi-user.target

[Unit] 部分
Description: 服务的简短描述,这里是"Ruoyi Backend Service",表明这是一个名为Ruoyi的后端服务。
After: 定义服务启动的顺序。这里After=network.target意味着这个服务将在网络目标达成后启动,确保网络功能可用。
[Service] 部分
User: 指定运行此服务的用户。这里设置为root,意味着服务将以root用户权限运行。出于安全考虑,通常不推荐以root用户运行服务,除非绝对必要。
ExecStart: 定义启动服务时执行的命令。这里ExecStart=/usr/bin/java -Xms256m -Xmx512m -jar /home/wl_call_center/wl-admin.jar指定了使用Java运行一个jar包,-Xms256m和-Xmx512m分别设置了Java虚拟机(JVM)的初始堆大小和最大堆大小为256MB和512MB。
SuccessExitStatus: 定义服务成功退出的状态码。这里SuccessExitStatus=143意味着当服务以状态码143退出时,systemd会认为服务是成功退出的。状态码143通常表示服务收到了SIGTERM信号并被正常终止。
Restart: 定义服务失败时的重启策略。这里Restart=on-failure意味着如果服务失败(即非成功退出状态),systemd将尝试重启服务。
RestartSec: 定义在尝试重启服务之前等待的时间。这里RestartSec=10s意味着如果服务失败,systemd将等待10秒后再尝试重启服务。
[Install] 部分
WantedBy: 定义服务的安装目标,即哪些目标(target)需要这个服务。这里WantedBy=multi-user.target意味着这个服务在安装时会被添加到multi-user.target(多用户目标),这是系统启动后的一个标准目标,提供了网络和多用户功能。

重新加载 systemd 配置

创建或修改服务单元文件后,需要重新加载 systemd 配置:

powershell 复制代码
sudo systemctl daemon-reload

启动和管理服务

执行命令:

  1. systemctl start demo.service
  2. systemctl status demo.service,出现如下图所示,代表成功了(我这边找了我之前的图)
powershell 复制代码
#开机自启
systemctl enable demo.service
#服务状态
systemctl status demo.service
#启动服务
systemctl start demo.service
#停止服务
systemctl stop demo.service
#重启服务
systemctl restart demo.service

日志查看

使用 journalctl 查看服务日志:

powershell 复制代码
journalctl -u demo.service -f
相关推荐
你想考研啊2 小时前
linux安装jdk和tomcat和并自启动
java·linux·tomcat
习惯就好zz4 小时前
WSL2 安装Ubuntu卡在安装进度0%无响应问题解决
linux·windows·ubuntu·wsl·wsl2
躲猫猫的喵喵5 小时前
Ubuntu2204降内核版本
linux·运维·服务器·ubuntu
昌sit!5 小时前
Linux系统性基础学习笔记
linux·笔记·学习
zdslovezy5 小时前
CentOS 系统升级 OpenSSH 和 OpenSSL 的完整方案
linux·运维·centos
HIT_Weston6 小时前
18、【Ubuntu】【远程开发】技术方案分析:私网ip掩码
linux·tcp/ip·ubuntu
cccccc语言我来了6 小时前
(Linux (6):从包管理到工具探索,构建系统操作基础认知)
linux·运维·服务器
ben9518chen7 小时前
嵌入式Linux C语言程序设计九
linux·c语言
IT 小阿姨(数据库)7 小时前
PostgreSQL 之上的开源时序数据库 TimescaleDB 详解
运维·数据库·sql·postgresql·开源·centos·时序数据库
颜大哦8 小时前
linux安装mysql
linux·运维·mysql·adb