在linux註冊服務並開機啟動springboot程式
阿新 • • 發佈:2022-03-16
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.註冊服務
- 先切換到系統目錄
cd /etc/systemd/system
- 註冊服務指令碼
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
- 配置服務
-
配置開機啟動
systemctl enable data.service
-
重新載入配置
systemctl daemon-reload
-
檢視啟動配置(到這裡就可以重啟測試了)
systemctl list-unit-files | grep data
-
使用systemctl啟動服務
systemctl start api.service
-
使用systemctl停止服務
systemctl stop api.service