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