需求
SpringBoot項目(jar)部署,需要先關閉原來啟動的項目,再啟動新的項目。直接輸入命令,費時費力,還容易出錯。所以,使用腳本啟動。
腳本
腳本名:start.sh
此腳本需要放置在jar包的同級目錄,才能正確找到jar包。
#!/bin/bash
echo "部署開始:XXX系統(tǒng)"
echo "關閉服務(已開啟的服務)"
PID=$(jps -l | grep HelloWorld.jar | awk '{print $1}')
if [ -n "$PID" ];then
kill -9 $PID
echo "關閉服務:完成"
else
echo "關閉服務:終止。無需關閉,沒有已開啟的服務"
fi
echo "啟動服務"
nohup java -jar HelloWorld.jar > HelloWorld.log 2>&1 &
echo "部署完成:XXX系統(tǒng)"
啟動命令
在腳本所在目錄,執(zhí)行如下命令:
sh start.sh
注意問題
Shell 變量賦值,等號前后不能有空格
一開始,我在給pid賦值時,等號左右兩端有等號,導致報錯。
解決 nohup: redirecting stderr to stdout
需要將錯誤輸出,也輸入到log日志中。
也就是腳本中加了如下一段:
2>&1
作用是將錯誤輸出到標準輸出,因為標準輸出又是輸出到log日志中,所以就都輸入到日志中,這樣命令行就不會報上面的輸出了。
Shell變量語法
精簡語法:
$pid
完整語法:
${pid}
完整的變量應用語法,不僅要包含$,還要在變量名周圍加上好括號。
PS
關閉已開啟服務的邏輯,采用的是直接強制關閉服務。
更好的方式,其實是讓服務自己關閉自身,然后定時監(jiān)控:
一段時間之后,如果程序已經(jīng)關閉了,就開啟新項目;
如果超過規(guī)定時間,仍然沒有關閉成功,則強制關閉,然后啟動新項目。
此邏輯可以參考最后的《腳本參考》鏈接。
VSCode格式化shell
http://www.taodudu.cc/news/show-4756426.html?action=onClick
參考
腳本參考:文章來源:http://www.zghlxwxcb.cn/news/detail-690441.html
https://gitee.com/longzipeng/study_share/blob/master/web_demo/renren_deploy.sh文章來源地址http://www.zghlxwxcb.cn/news/detail-690441.html
到了這里,關于SpringBoot項目(jar)部署,啟動腳本的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!