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


1.本文说明

使用systemctl配置springboot服务开机自启动,当然也可以做很多延伸,因为底层原理就是开机执行一个脚本。
应该在centos和ubuntu都是可以使用的[狗头保命]。

2.启停脚本

启动(重启)脚本

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

#!/bin/sh
# jar包路径
APP1_NAME=/home/data/data.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 /home/data/jdk1.8.0_251/jre/bin/java -jar $APP1_NAME --spring.profiles.active=prd > /home/data/nohup.log 2>&1 &

停止脚本(kill)

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

#!/bin/sh
# jar包路径
APP1_NAME=/home/data/data.jar

# 查询是否有原进程
tpid1=`ps -ef|grep $APP1_NAME|grep -v grep|grep -v kill|awk '{print $2}'`
# 如果此进程已经启动,则先杀掉
if [ $tpid1 ]; then
kill -9 $tpid1
fi

3.注册服务

  1. 先切换到系统目录
    cd /etc/systemd/system
  2. 注册服务脚本
    vi data.service
    内容参考:
[Unit]
Description=data server
# 依赖项,在这些程序之后启动
After=NetworkManager.service mysqld.service

[Service]
Type=forking
# 配置启动脚本
ExecStart=/home/data/start.sh
# 配置重启脚本
ExecReload=/home/data/start.sh
# 配置停止脚本
ExecStop=/home/data/stop.sh
PrivateTmp=true
 
[Install]
WantedBy=multi-user.target
  1. 配置服务
  • 配置开机启动
    systemctl enable data.service

  • 重新加载配置
    systemctl daemon-reload

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

  • 使用systemctl启动服务
    systemctl start api.service

  • 使用systemctl停止服务
    systemctl stop api.service


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM