首页 > 系统相关 >将SpringBoot打包之后的jar设为守护进程

将SpringBoot打包之后的jar设为守护进程

时间:2024-08-28 17:27:17浏览次数:9  
标签:设为 服务 SpringBoot service sudo jar systemd systemctl beirui

要在Linux系统上将Spring Boot打包的jar服务设置为守护进程,并实现服务挂掉后自动重启,你可以使用systemd或supervisord这样的工具。

我选择了systemd的方案

最终脚本如下:

创建一个脚本 /home/beirui/start-beirui-admin.sh,内容如下:

#!/bin/bash
/usr/bin/java -jar /home/beirui/beirui-admin.jar > /home/beirui/beiruiAdminLog.txt 2>&1

然后给这个脚本赋予执行权限:

sudo chmod +x /home/beirui/start-beirui-admin.sh

 

创建服务单元文件如下

1. 创建一个systemd服务文件

首先,创建一个systemd服务文件,例如my-springboot-app.service

sudo nano /etc/systemd/system/my-springboot-app.service

2. 编辑服务文件

在文件中添加以下内容,替换占位符为你的实际信息:[Unit]

Description=Beirui Sap Qimen Spring Boot Application
After=network.target


[Service]
User=root
# 设置工作目录为你的Spring Boot应用所在目录 WorkingDirectory=/home/beirui ExecStart=/home/beirui/start-beirui-admin.sh
#在某些情况下,使用重定向符号(>)在 ExecStart 中可能无法正常工作。你可以尝试将日志重定向到文件的操作移动到一个脚本中,然后在 ExecStart 中调用这个脚本。
#使用下面两种方式,都没有实现将日志输出到 /home/beirui/beiruiAdminLog.txt中,故采取脚本调用的方式
#只能通过journalctl -u beirui-admin.service -f查看日志
#ExecStart=/usr/bin/java -jar /home/beirui/beirui-admin.jar >> /home/beirui/beiruiAdminLog.txt 2>&1 #ExecStart=/usr/bin/java -jar /home/beirui/beirui-admin.jar SuccessExitStatus=143 Restart=always RestartSec=10 #StandardOutput=file:/home/beirui/beiruiAdminLog.txt #StandardError=file:/home/beirui/beiruiAdminLog.txt [Install] WantedBy=multi-user.target

3. 加载服务文件并启动服务

运行以下命令以重新加载systemd,启用并启动你的Spring Boot服务:

sudo systemctl daemon-reload
sudo systemctl enable my-springboot-app.service
sudo systemctl start my-springboot-app.service

4. 检查服务状态

你可以用以下命令检查服务是否在运行:

sudo systemctl status my-springboot-app.service

5. 自动重启服务

Restart=always这一行会确保当服务挂掉时,它会自动重启。

你可以根据需要调整RestartSec的时间来设定重启的延迟时间。

通过这些步骤,你的Spring Boot服务将作为守护进程运行,并在崩溃或停止后自动重启。

 

在某些情况下,需要停止该服务,如何拒绝自动重启服务呢

要在特定情况下停止Spring Boot服务,并且不希望它自动重启,你可以使用以下方法:

方法 1: 手动停止服务并禁用自动重启

你可以通过以下命令停止服务并同时禁用自动重启功能:

sudo systemctl stop my-springboot-app.service
sudo systemctl disable my-springboot-app.service

disable命令会防止服务在系统启动时自动启动,也会避免服务在手动停止后自动重启。

方法 2: 暂时停止服务不自动重启

如果你希望在停止服务时暂时禁止自动重启,但不想完全禁用服务,可以先使用以下命令:

如果你希望在停止服务时暂时禁止自动重启,但不想完全禁用服务,可以先使用以下命令:

bash sudo systemctl stop my-springboot-app.service

然后临时将服务的Restart策略改为no

bash sudo systemctl edit my-springboot-app.service

添加以下内容:

ini [Service] Restart=no

保存并退出。这样,服务将不会自动重启。

要恢复原来的自动重启策略,可以删除这些临时修改:

bash sudo systemctl revert my-springboot-app.service

方法 3: 使用systemctl mask命令

你也可以使用mask命令来彻底防止服务启动:

bash sudo systemctl mask my-springboot-app.service

mask会将服务链接到/dev/null,从而彻底防止其启动。要解除这个状态,可以使用:

bash sudo systemctl unmask my-springboot-app.service

这些方法可以根据不同的需求选择。如果你只是想停止服务并防止其自动重启,方法1和2是最直接的选择。

 

查看系统中为那些服务设置了守护进程?  

在Linux系统中,使用systemd管理的服务通常都会被设置为守护进程。要查看系统中已设置为守护进程的服务,可以使用以下几种方法:

1. 查看所有已启动的systemd服务

使用以下命令列出系统中所有正在运行的服务:

bash systemctl list-units --type=service --state=running

该命令会列出所有正在运行的服务,但不一定都是守护进程。

2. 查看已启用的systemd服务

要查看所有已启用并可能在启动时自动运行的服务,可以使用:

bash systemctl list-unit-files --type=service --state=enabled

这个命令会列出所有被设置为在系统启动时自动启动的服务,通常这些服务会被设置为守护进程。

3. 通过过滤Restart策略来查看守护进程服务

你可以检查某个特定服务的配置文件,查看它是否设置了Restart策略来确定是否为守护进程:

bash systemctl cat <service-name>.service

如果你想更广泛地查看系统中具有Restart策略的服务文件,你可以通过查找关键字来实现:

bash grep -r Restart= /etc/systemd/system/

这个命令会在/etc/systemd/system/目录下查找所有包含Restart=配置的服务文件。通常这些服务会被设置为守护进程。

4. 使用ps命令查看后台进程

尽管这不是专门查看systemd守护进程的命令,但你也可以使用ps命令查看当前系统中的所有守护进程:

bash ps -ef | grep -v tty

这个命令会列出所有没有关联终端的进程(即守护进程)。

通过这些方法,你可以查看系统中已经设置为守护进程的服务。

 

标签:设为,服务,SpringBoot,service,sudo,jar,systemd,systemctl,beirui
From: https://www.cnblogs.com/huanghongbo/p/18385183

相关文章

  • 基于springboot的grpc服务端demo
    1.Javamaven配置点击查看代码<?xmlversion="1.0"encoding="UTF-8"?><projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="h......
  • 03. SpringBoot 项目创建
    接下来我们将要完成一个基础的Springboot项目的创建,并且将项目上传到Gitee1.查看官网,选择版本学习任何一门技术,一定要学会从官网了解一手信息,无论是哪个博主的博客都是有时效性的,我们要掌握这样的习惯,看懂看不懂另说,起码知道从哪里去找。spring官网地址:https://sp......
  • springboot基于vue的汽车租赁系统
    目录摘要 1Abstract 1目录 21绪论 41.1研究背景与意义 41.2国内外研究现状 41.3研究内容 51.4论文结构 51.5本章小结 52理论基础 62.1B/S模式 62.2IDEA开发环境 62.3MySQL数据库 62.4Java语言 72.5本章小结 73需求分析 83.1功能需求分......
  • springboot针对老年人的景区订票系统
    系统包含:源码+论文所用技术:SpringBoot+Vue+SSM+Mybatis+Mysql免费提供给大家参考或者学习,获取资料请私聊我目录目录 III1绪论 11.1研究背景 11.2目的和意义 11.3论文结构安排 22相关技术 32.1B/S结构介绍 32.2MySQL数据库介绍 32.3SpringBoot框......
  • springboot大学生科创项目在线管理系统的设计与实现
    系统包含:源码+论文所用技术:SpringBoot+Vue+SSM+Mybatis+Mysql免费提供给大家参考或者学习,获取资料请私聊我目录目录 III第1章绪论 11.1选题动因 11.2目的和意义 11.3论文结构安排 2第2章开发环境与技术 32.1MYSQL数据库 32.2Tomcat介绍 32.3vue技......
  • SpringBoot配置动态数据源 原理+实战
    若没空探究原理可直接跳转到“实现方式:注解+切面”目录数据源切换方法Spring对数据源的管理类似于策略模式,不懂策略模式也没关系,其实就是有一个全局的键值对,类型是Map<String,DataSource>。当JDBC操作数据库之时,会根据不同的key值选择不同的数据源。而这个key值可以放到方法的......
  • SpringBoot配置多个kafka配置
    引入依赖<dependency><groupId>org.springframework.kafka</groupId><artifactId>spring-kafka</artifactId><version>2.7.14</version></dependency>yml配置有几个就配置几个......
  • Springboot计算机毕业设计汽车销售管理系统3ytu1
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表用户,员工,汽车分类,汽车品牌,汽车颜色,汽车信息,汽车预订,汽车入库,数据统计,反馈信息开题报告内容一、毕业设计(论文)题目的来源、理论或实际应用意义1.1题目......
  • 基于java的SpringBoot框架卫生健康系统
    博主介绍:java高级开发,从事互联网行业六年,熟悉各种主流语言,精通java、python、爬虫、web开发,已经做了六年的程序开发,开发过上千套大学生实战程序,可以定制、也可成品项目,博客中有上百套程序可供参考,欢迎共同交流学习。......
  • 使用idea快速创建springbootWeb项目(springboot+springWeb+mybatis-Plus)
    idea快速创建springbootWeb项目详细步骤如下1)创建项目2)选择springboot版本3)添加web依赖4)添加Thymeleaf5)添加lombok依赖然后点击create进入下一步双击pom.xml文件6)添加mybatis-plus依赖        这里使用的springboot版本比较新,mybatis-plus-boot-star......