在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

相关推荐
阿米亚波11 分钟前
【EVE-NG 实战】防火墙基础(VLAN · VRRP · NAT · ACL · 静态路由)
运维·网络·笔记·网络协议·计算机网络·网络安全·运维开发
日取其半万世不竭40 分钟前
云服务器迁移怎么少停机?DNS 切换前后的完整清单
运维·服务器
FREEDOM_X1 小时前
Linux 多线程编程——总结
java·linux·运维·ubuntu
名字还没想好☜1 小时前
Docker 多阶段构建:把镜像从 1.2GB 砍到 15MB
运维·docker·容器·多阶段构建·镜像优化
祸心依旧1 小时前
Visual Studio 五月更新 —— 计划、评审、优化
运维·人工智能·visual studio
Web4Browser2 小时前
Headless 浏览器自动化适合哪些任务?巡检、截图和提交动作要分级
运维·前端·自动化
難釋懷2 小时前
Nginx浏览器强制缓存
运维·nginx·缓存
大博士.J2 小时前
视频号主体违规与认证上限?正确的解决方式
运维·python·自动化
山东点狮信息科技有限公司2 小时前
企业级应用双模式部署架构设计:从单体到微服务的平滑演进
运维·微服务·架构
hey you~2 小时前
400电话选型技术测评:一个开发视角的线路质量评估方案
运维·网络·数据库·400电话·企业通信