如何在Linux将Spring Boot项目的Jar包注册为开机自启动系统服务
有时候我们需要将Spring Boot打包出来jar文件当做系统服务注册到系统中,本文教你如何操作
目录结构
以下是目录结构,jar文件是从maven package打包出来的,config/application.yml是原先在项目的resources文件夹里,外置出来方便适配开发环境和正式环境。static目录用来存放静态资源,比如vue前端或者上传目录。所有的.sh文件都是本文后续要写的。
/data/start.sh // 启动脚本/stop.sh // 关闭脚本/serviceStart.sh // 服务启动脚本/serviceStop.sh // 服务关闭脚本/YumeisoftDemo-0.0.1-SNAPSHOT.jar // 打包的项目Jar包/config // 配置文件目录/application.yml // 项目配置文件/jdk // jdk目录/static // 静态资源目录
编写Service调用的脚本
配置脚本/data/config.sh,如果改包名,直接改这个文件即可
#!/bin/sh
# 配置JAR文件名,把它改成你的Jar文件名
SPRING_JARFILE=YumeisoftDemo-0.0.1-SNAPSHOT.jar
# 日志文件位置
LOG_FILE=system.log
# 获取.sh所在路径
INSTALL_DIR=$(cd $(dirname $0);pwd)
# 配置JDK路径
JAVA_HOME=$INSTALL_DIR/jdk
# 设定PATH,不设会无法使用java命令
PATH=$JAVA_HOME/bin:$PATH
手动启动服务脚本/data/start.sh,其中system.log是日志文件名
#!/bin/sh
# 读取config.sh定义的内容
source $INSTALL_DIR/config.sh
# 后台方式运行jar包
nohup java -jar $INSTALL_DIR/$SPRING_JARFILE > $INSTALL_DIR/$LOG_FILE 2>&1 &
# 显示日志
tail -f $INSTALL_DIR/$LOG_FILE
手动关闭服务脚本/data/stop.sh
#!/bin/sh
# 读取config.sh定义的内容
source $INSTALL_DIR/config.sh
# 获取当前项目运行的进程ID
PID=$(ps -ef | grep "java -jar $INSTALL_DIR/$SPRING_JARFILE" | grep -v grep | awk '{print $2}')if [ -z "$PID" ]; then# 如果没找到则提示未运行echo "Spring Boot应用未在运行中."
else# 如果找到了,正常终止进程kill $PID# 显示日志tail -f $INSTALL_DIR/$LOG_FILEecho "Spring Boot应用已停止."
fi
服务启动脚本/data/serviceStart.sh
#!/bin/sh
# 读取config.sh定义的内容
source $INSTALL_DIR/config.sh
# 后台方式运行jar包
nohup java -jar $INSTALL_DIR/$SPRING_JARFILE > $INSTALL_DIR/$LOG_FILE 2>&1 &
服务关闭脚本/data/serviceStop.sh
#!/bin/sh
# 读取config.sh定义的内容
source $INSTALL_DIR/config.sh
# 获取当前项目运行的进程ID
PID=$(ps -ef | grep "java -jar $INSTALL_DIR/$SPRING_JARFILE" | grep -v grep | awk '{print $2}')if [ -z "$PID" ]; then# 如果没找到则提示未运行echo "Spring Boot应用未在运行中."
else# 如果找到了,正常终止进程kill $PIDecho "Spring Boot应用已停止."
fi
赋权
不赋权是无法运行的,所以我们要执行以下命令:
chmod a+x /data/*.sh
创建一个Service
接下来我们把这个项目注册为系统服务,myService改成你要改成的服务名:
vim /etc/systemd/system/myService.service
因为之前没有这个系统服务,会创建一个新文件,这个文件就是系统服务的启停配置文件,按一下a进入编辑模式,把下面的代码粘贴上去,然后按下Esc、冒号、输入wq、回车。
[Unit]
Description=MyService
After=network.target[Service]
Type=forking
ExecStart=/data/serviceStart.sh
ExecStop=/data/serviceStop.sh
PrivateTmp=true[Install]
WantedBy=multi-user.target
这里面的ExecStart和ExecStop都是服务启动和服务停止脚本的绝对路径。Description是指服务的描述信息,这里可以填中文,其他的不要改动。
启用并使用Service
做完以上步骤你就可以在服务器里执行systemctl enable myService命令,即可启用myService服务,然后使用systemctl start myService即可启动服务,systemctl stop myService即可关停服务,system status myService命令可以看到服务的状态。
相关文章:
如何在Linux将Spring Boot项目的Jar包注册为开机自启动系统服务
有时候我们需要将Spring Boot打包出来jar文件当做系统服务注册到系统中,本文教你如何操作 目录结构 以下是目录结构,jar文件是从maven package打包出来的,config/application.yml是原先在项目的resources文件夹里,外置出来方便适…...
LAMP项目部署实战
一、LAMP环境部署 1、回顾LAMP LAMP Linux Apache MySQL PHP Apache:主要用于接收用户的请求,处理业务逻辑,返回结果给客户端(浏览器) PHP:编程语言的一种,主要应用于Web开发。主要实现注…...
Tauri2 mobile development traps
时间点:2023/10/24。最近在倒腾移动端开发,不想学原生和 flutter,试了试 react-native,开发体验没有想象中的舒服,干脆直接上 tauri 2 吧,半年前就听说 tauri 2 支持移动端,到现在应该可堪小用。…...
使用Jenkins触发gitlab的webhook
满足条件: 首先手动构建可以完成构建 例如: 打开项目点击配置 在“Build Triggers”栏勾选,Build when a change is pushed to GitLab. GitLab webhook ;如下 复制URL链接,我的链接是:http://192.168.44…...
Vcenter 6.5 web 报错503解决办法
Vc web打不开就重启服务 service-control --stop --all service-control --start --all 单独启动xeb服务 service-control --start vpxd 参考 C: \Program Files\ VMware \vCenter Server \bin) service-control --list service-control --start xXx service-control -…...
计算机网络-计算机网络体系结构-应用层
目录 一、网络应用模型 客户/服务器模型(Client/Server) P2P模型(Peer-to-peer) 二、域名解析系统(DNS) 域名 域名服务器 解析过程 三、文件传输协议(FTP) FTP控制原理 四、电子邮件 组成结构 协议 SMTP MIME POP3 IMAP 五、万维网和HTTP协议 概述 HTTP 报…...
软考-网络安全漏洞防护技术原理与应用
本文为作者学习文章,按作者习惯写成,如有错误或需要追加内容请留言(不喜勿喷) 本文为追加文章,后期慢慢追加 by 2023年10月 网络安全漏洞概念 网络安全漏洞指的是网络系统或应用程序中存在的安全弱点,被…...
【自然语言处理】理解词向量、CBOW与Skip-Gram模型
文章目录 一、词向量基础知识1.1 One-hot表示1.2 Distributed表示 二、word2vec基础知识2.1 CBOW和Skip-gram 三、基于Hierarchical Softmax的 CBOW 模型和 Skip-gram 模型3.1 CBOW 模型3.2 Skip-gram 模型 参考资料 由于计算机不能直接对各种字符进行运算,为此需要…...
一致性哈希算法原理
文章目录 前言正文一、抛砖引玉,简单Hash算法的短板二、一致性Hash算法的基本概念2.1 一致性Hash算法本质也是取模2.2 便于理解的抽象,哈希环2.3 服务器如何映射到哈希环上2.4 对象如何映射到哈希环上,并关联到对应的机器 三、一致性Hash算法…...
回归预测 | MATLAB实现BO-LSTM贝叶斯优化长短期神经网络多输入单输出回归预测
回归预测 | MATLAB实现BO-LSTM贝叶斯优化长短期神经网络多输入单输出回归预测 目录 回归预测 | MATLAB实现BO-LSTM贝叶斯优化长短期神经网络多输入单输出回归预测效果一览基本介绍模型搭建程序设计参考资料 效果一览 基本介绍 MATLAB实现BO-LSTM贝叶斯优化长短期神经网络多输入…...
工厂干洗店洗鞋店系统,校园洗护小程序来了
洗鞋店小程序,干洗店软件,洗护行业小程序,上门取衣小程序,预约干洗小程序,校园干洗店小程序,工厂干洗店小程序,干洗店小程序开发,成品软件开发 洗衣工厂软件、功能强大! 包含以下主要功能: * 用户选择洗护用品&#x…...
计算机毕设 opencv 图像识别 指纹识别 - python
文章目录 0 前言1 课题背景2 效果展示3 具体实现3.1 图像对比过滤3.2 图像二值化3.3 图像侵蚀细化3.4 图像增强3.5 特征点检测 4 OpenCV5 最后 0 前言 🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往…...
简化通知基础设施:开源的消息通知服务 | 开源专题 No.41
novuhq/novu Stars: 22.9k License: MIT Novu 是一个开源的通知基础设施项目,它提供了统一的 API 来通过多个渠道发送通知,包括应用内、推送、电子邮件、短信和聊天。主要功能有: 为所有消息提供商 (应用内、电子邮件、短信、推送和聊天) 提…...
微信公众号排版写作
对话框添加菜单 05 一节课学会使用微信自动回复_哔哩哔哩_bilibili 一件扫图关注 一件扫描付款 公众号排版 10元付费 08 —长按二维码关注和收款_哔哩哔哩_bilibili 微信开店 09 一节课开设自己的微店_哔哩哔哩_bilibili 知乎软文,设置引流矩阵 20 —在知乎写…...
UE4/5 批量进行贴图Texture压缩、修改饱和度
该插件下载地址: 🍞正在为您运送作品详情https://mbd.pub/o/bread/ZZWYmpxw 适用于 UE4 4.25/4.26/4.27 UE5 以上版本 在Edit - Plugins中分别开启 插件 Python Editor Script Plugin 插件 Editor Scripting Utilites 如果会python代码,…...
mysql中limit和offset的用法详细介绍
有的时候我们在学习或者工作中会使用到SQL语句,那么介绍一下limit和offset的使用方法。 mysql里分页一般用limit来实现,例如: 1、select* from user limit 3 表示直接取前三条数据 2、select * from user limit 1,3; 表示取1后面的第2,3,…...
vivado简单仿真入门
打开软件 创建工程 create project 先next,保留工程路径,配置环境 配置芯片环境 本次芯片类型 xc7k325tffg900-2 创建之后完整的demo 编写仿真内容 timescale 1ns/1…...
Elsevier (爱思唯尔) 期刊 投稿流程与注意点
😄 Elsevier (爱思唯尔) 期刊投稿流程中还是遇到了不少问题的,本篇文章总结一些说明文档和提交要点。 ⭐ LaTex 模板说明 & 投稿流程与准备 latex模版和投稿流程相关参考说明可看下面几个网址,总结的非常全面了: Elsevier&am…...
centos Let‘s Encrypt 免费https证书申请,并且自动续约
一、首先我们要使用certbot 工具 官网地址: https://certbot.eff.org/instructions?wsother&oscentosrhel8 下载 snap 工具 sudo yum install snapd sudo systemctl enable --now snapd.socket sudo ln -s /var/lib/snapd/snap /snap sudo systemctl status…...
nodejs+vue城市轨道交通线路查询系统-计算机毕业设计
着社会的快速发展,计算机的影响是全面且深入的。社会生产水平的不断提高,日常生活中人们对备忘记账系统方面的要求也在不断提高,因特网的使用越来越广泛,而在众多的因特网中,万维网更是为人们带来了新鲜的体验。在这当…...
Pixel Mind Decoder 参数调优实战:平衡推理速度与识别准确率
Pixel Mind Decoder 参数调优实战:平衡推理速度与识别准确率 1. 为什么需要参数调优 当你第一次使用Pixel Mind Decoder时,可能会发现同样的输入有时会产生不同的输出质量。这就像开车时需要在速度和油耗之间找到平衡点一样,AI模型的参数调…...
2026 AI关键词搜索排名优化行业专业测评:中之网科技江苏有限公司——技术驱动,万词霸屏,全链路AI获客解决方案
2026 AI关键词搜索排名优化行业专业测评:中之网科技江苏有限公司——技术驱动,万词霸屏,全链路AI获客解决方案一、测评背景与核心维度随着AI大模型(DeepSeek、豆包、腾讯元宝、Kimi、文心一言、通义千问等)成为企业获客…...
英语体育比赛口语
一、看比赛1. 邀约看球中文英文今晚有比赛,一起看吗?Theres a game tonight. Want to watch together?你看了昨晚的比赛吗?Did you watch the game last night?决赛什么时候?When is the final?我们去酒吧看球吧!Le…...
保姆级教程:用唯创知音WT588F02B语音芯片,从录音到烧录完整走一遍
零基础实战:WT588F02B语音芯片从录音到播放全流程解析 第一次接触语音芯片开发时,我被WT588F02B的易用性惊艳到了——不需要复杂的编程,只需准备好音频文件就能实现语音播放功能。但实际操作中,从录音到最终烧录成功,每…...
从‘大胖老师’到‘小学霸’:用动态蒸馏拯救被剪枝‘剪残’的小模型
从‘大胖老师’到‘小学霸’:动态蒸馏如何拯救剪枝后的模型性能 想象一下,你有一位知识渊博的"大胖老师"——一个经过精心训练的大型神经网络模型。为了让它更轻便、更高效,你决定给它"减肥"(结构化剪枝&…...
NW.js 保姆级教程来了!零基础也能开发桌面应用(2026 最新版)
一句话总结:用你熟悉的 HTML CSS JavaScript,直接打包成 Windows / macOS / Linux 桌面程序——这就是 NW.js 的魔力! 一、NW.js 到底是什么?别再和 Electron 搞混了! 如果你会前端开发,但一直以为“做桌…...
AI读脸术作品集:看看模型如何识别不同人脸的属性
AI读脸术作品集:看看模型如何识别不同人脸的属性 1. 引言:人脸属性识别的实际应用 想象一下,当你走进一家智能商店,摄像头能立即判断你的性别和年龄段,为你推荐合适的商品;或者当你使用社交软件自拍时&am…...
全网薅羊毛新地图”:华莱士套餐实测13.9元起,连锁巨头麦当劳紧随其后!
近期,随着经济压力的加大,餐饮市场的竞争愈发激烈。在原本以低价策略闻名的麦当劳“穷鬼套餐”开始面临严峻挑战之际,一家曾被网友戏称为“穷鬼旗舰”的连锁快餐品牌——华莱士,悄然推出了更具性价比的“超值套餐”,在…...
从CORS到自定义,让你的API更健壮
一、中间件是啥?咱用“餐厅”打个比方想象一下,你的FastAPI应用是个高级餐厅。👉 顾客(客户端请求)来到门口。- 迎宾(CORS中间件):先看你是不是从允许的街区(域名&#x…...
MGeo中文地址结构化教程:从原始文本到标准GeoJSON格式输出的完整转换流程
MGeo中文地址结构化教程:从原始文本到标准GeoJSON格式输出的完整转换流程 1. 引言:为什么我们需要地址结构化? 你有没有遇到过这样的场景?用户填写的收货地址五花八门:“北京市海淀区中关村大街27号”、“北京海淀中…...
