1. 程式人生 > 其它 >在linux註冊服務並開機啟動springboot程式

在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