当前位置: 首页 > news >正文

在linux注册服务并开机启动springboot程序

1.本文说明

配置springboot的jar包开机自启动,centos和ubuntu都可以使用

本文以/home/java/mes.jar包启动方式为例

2.启停脚本

(1)启动(重启)脚本

进入/data/目录

cd /data/

vim  mes_start.sh

此处启动和重启都使用了这个脚本,因为其中包含了此进程存在就先杀掉的处理

日志文件保存在   /data/mes_nohup.log

#!/bin/sh
# jar包路径
APP1_NAME=/home/java/mes.jar# 查询是否有原进程
tpid1=`ps -ef|grep $APP1_NAME|grep -v grep|grep -v kill|awk '{print $2}'`
# 如果此进程已经启动,则先杀掉
if [ $tpid1 ]; then
kill -9 $tpid1
fi# 启动项目jar包,java命令写成了绝对路径,因为系统启动的时候是不识别环境变量的
# 日志文件也写成了绝对路径,不然日志会输出在init.d目录
nohup java -jar $APP1_NAME --spring.profiles.active=prd > /data/mes_nohup.log 2>&1 &
(2)停止脚本(kill)

进入/data/目录

cd /data/

vim mes_stop.sh

直接暴力杀掉进程,有更优雅的方式大家可以自行解决

#!/bin/sh
# jar包路径
APP1_NAME=/home/java/mes.jar# 查询是否有原进程
tpid1=`ps -ef|grep $APP1_NAME|grep -v grep|grep -v kill|awk '{print $2}'`
# 如果此进程已经启动,则先杀掉
if [ $tpid1 ]; then
kill -9 $tpid1
fi

(3) 授权

chmod -R 777 mes_start.sh

chmod -R 777 mes_stop.sh

3.注册服务

(1)先切换到系统目录
cd /etc/systemd/system

(2)注册服务脚本
vim mes.service
内容参考:注意启动脚本的目录位置/data/,依赖项如果不需要mysql,就改成After=NetworkManager.service

[Unit]
Description=data server
# 依赖项,在这些程序之后启动
After=NetworkManager.service mysqld.service[Service]
Type=forking
# 配置启动脚本
ExecStart=/data/start.sh
# 配置重启脚本
ExecReload=/data/start.sh
# 配置停止脚本
ExecStop=/data/stop.sh
PrivateTmp=true[Install]
WantedBy=multi-user.target

(3)授权service     

chmod -R 777 mes.service

4. 配置开机启动

(1)配置开机启动
sudo systemctl enable mes.service

(2)重新加载配置
sudo systemctl daemon-reload

(3)查看启动配置(到这里就可以重启测试了)
sudo systemctl list-unit-files | grep mes

(4)使用systemctl启动服务,进行测试,如果失败failure,则查看下配置路径
sudo systemctl start mes.service

(5)使用systemctl停止服务
sudo systemctl stop mes.servic

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • html+css+js网页设计 旅游 大理旅游7个页面
  • 变量取值范围
  • MyBatis快速入门
  • Jwt、Filter、Interceptor
  • 数组学习内容
  • 随想录笔记-二叉树练习题
  • 【Webpack--007】处理其他资源--视频音频
  • 【网络】DNS,域名解析系统
  • 解决RabbitMQ设置TTL过期后不进入死信队列
  • 蓝桥杯—STM32G431RBT6按键的多方式使用(包含软件消抖方法精讲)从原理层面到实际应用(一)
  • WPF DataGrid 列表中,DataGrid.Columns 列根据不同的值显示不同内容
  • 基于Netty实现TCP客户端:封装断线重连、连接保持
  • 僵尸网络开发了新的攻击技术和基础设施
  • 【C++指南】作用域限定符 :: 使用详解
  • Pandas Series对象创建,属性,索引及运算详解
  • 2018天猫双11|这就是阿里云!不止有新技术,更有温暖的社会力量
  • cookie和session
  • ES学习笔记(10)--ES6中的函数和数组补漏
  • Python3爬取英雄联盟英雄皮肤大图
  • ucore操作系统实验笔记 - 重新理解中断
  • Wamp集成环境 添加PHP的新版本
  • Xmanager 远程桌面 CentOS 7
  • 阿里云爬虫风险管理产品商业化,为云端流量保驾护航
  • 阿里云应用高可用服务公测发布
  • 编写符合Python风格的对象
  • 回顾2016
  • 什么是Javascript函数节流?
  • 我这样减少了26.5M Java内存!
  • 学习使用ExpressJS 4.0中的新Router
  • 一道闭包题引发的思考
  • 正则与JS中的正则
  • 终端用户监控:真实用户监控还是模拟监控?
  • 我们雇佣了一只大猴子...
  • ​sqlite3 --- SQLite 数据库 DB-API 2.0 接口模块​
  • ​软考-高级-系统架构设计师教程(清华第2版)【第1章-绪论-思维导图】​
  • # Spring Cloud Alibaba Nacos_配置中心与服务发现(四)
  • #Linux(Source Insight安装及工程建立)
  • (145)光线追踪距离场柔和阴影
  • (6)STL算法之转换
  • (附源码)ssm经济信息门户网站 毕业设计 141634
  • (亲测有效)推荐2024最新的免费漫画软件app,无广告,聚合全网资源!
  • (十五)使用Nexus创建Maven私服
  • (转)Android中使用ormlite实现持久化(一)--HelloOrmLite
  • (转)总结使用Unity 3D优化游戏运行性能的经验
  • .bat批处理(一):@echo off
  • .gitignore文件_Git:.gitignore
  • .Net Attribute详解(上)-Attribute本质以及一个简单示例
  • .NET Core Web APi类库如何内嵌运行?
  • .Net Winform开发笔记(一)
  • .NET开发不可不知、不可不用的辅助类(一)
  • [ JavaScript ] JSON方法
  • []T 还是 []*T, 这是一个问题
  • [240621] Anthropic 发布了 Claude 3.5 Sonnet AI 助手 | Socket.IO 拒绝服务漏洞
  • [AIGC] 开源流程引擎哪个好,如何选型?
  • [Android学习笔记]ScrollView的使用