在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