Linux腳本啟動(dòng)jar包方式
注意:
以下腳本筆者是在Windows上編輯的,因此默認(rèn)格式是dos。
如果在Linux上使用,請(qǐng)使用vi命令編該文件,改為Unix格式。
筆者使用的SpringBoot + jsp 因此使用的是war包,如果你使用的是jar包,在文中用到war的地方改成jar就行。
一:腳本auto_deploy.sh
使用該腳本只需要修改JAR_NAME(改成自己的)、LOG_PATH(改成自己的)、腳本格式(改成Unix格式)這三點(diǎn)就行了。
#!/bin/bash # 定義變量 # 要運(yùn)行的jar包路徑,加不加引號(hào)都行。 注意:等號(hào)兩邊 不能 有空格,否則會(huì)提示command找不到 JAR_NAME="/xxx/xxx/xxx/xxx.war" # 日志路徑,加不加引號(hào)都行。 注意:等號(hào)兩邊 不能 有空格,否則會(huì)提示command找不到 LOG_PATh=/export/Logs/main.log # 如果輸入格式不對(duì),給出提示! tips() { echo "" echo "WARNING!!!......Tips, please use command: sh auto_deploy.sh [start|stop|restart|status]. For example: sh auto_deploy.sh start " echo "" exit 1 } # 啟動(dòng)方法 start() { # 重新獲取一下pid,因?yàn)槠渌僮魅鐂top會(huì)導(dǎo)致pid的狀態(tài)更新 pid=`ps -ef | grep $JAR_NAME | grep -v grep | awk '{print $2}'` # -z 表示如果$pid為空時(shí)執(zhí)行 if [ -z $pid ]; then nohup java -jar $JAR_NAME > /dev/null 2>&1 & pid=`ps -ef | grep $JAR_NAME | grep -v grep | awk '{print $2}'` echo "" echo "Service ${JAR_NAME} is starting!pid=${pid}" echo "........................Here is the log.............................." echo "....................................................................." tail -f $LOG_PATh echo "........................Start successfully!........................." else echo "" echo "Service ${JAR_NAME} is already running,it's pid = ${pid}. If necessary, please use command: sh auto_deploy.sh restart." echo "" fi } # 停止方法 stop() { # 重新獲取一下pid,因?yàn)槠渌僮魅鐂tart會(huì)導(dǎo)致pid的狀態(tài)更新 pid=`ps -ef | grep $JAR_NAME | grep -v grep | awk '{print $2}'` # -z 表示如果$pid為空時(shí)執(zhí)行。 注意:每個(gè)命令和變量之間一定要前后加空格,否則會(huì)提示command找不到 if [ -z $pid ]; then echo "" echo "Service ${JAR_NAME} is not running! It's not necessary to stop it!" echo "" else kill -9 $pid echo "" echo "Service stop successfully!pid:${pid} which has been killed forcibly!" echo "" fi } # 輸出運(yùn)行狀態(tài)方法 status() { # 重新獲取一下pid,因?yàn)槠渌僮魅鐂top、restart、start等會(huì)導(dǎo)致pid的狀態(tài)更新 pid=`ps -ef | grep $JAR_NAME | grep -v grep | awk '{print $2}'` # -z 表示如果$pid為空時(shí)執(zhí)行。注意:每個(gè)命令和變量之間一定要前后加空格,否則會(huì)提示command找不到 if [ -z $pid ];then echo "" echo "Service ${JAR_NAME} is not running!" echo "" else echo "" echo "Service ${JAR_NAME} is running. It's pid=${pid}" echo "" fi } # 重啟方法 restart() { echo "" echo ".............................Restarting.............................." echo "....................................................................." # 重新獲取一下pid,因?yàn)槠渌僮魅鐂tart會(huì)導(dǎo)致pid的狀態(tài)更新 pid=`ps -ef | grep $JAR_NAME | grep -v grep | awk '{print $2}'` # -z 表示如果$pid為空時(shí)執(zhí)行。 注意:每個(gè)命令和變量之間一定要前后加空格,否則會(huì)提示command找不到 if [ ! -z $pid ]; then kill -9 $pid fi start echo "....................Restart successfully!..........................." } # 根據(jù)輸入?yún)?shù)執(zhí)行對(duì)應(yīng)方法,不輸入則執(zhí)行tips提示方法 case "$1" in "start") start ;; "stop") stop ;; "status") status ;; "restart") restart ;; *) tips ;; esac
注意事項(xiàng):
- -z 命令表示如果$pid為空時(shí)執(zhí)行。 注意:每個(gè)命令和變量之間一定要前后加空格,否則會(huì)提示command找不到
- 要運(yùn)行的jar包路徑,加不加引號(hào)都行。 注意:等號(hào)兩邊 不能 有空格,否則會(huì)提示command找不到
二:更改腳本格式
注意:以下腳本筆者是在Windows上編輯的,因此默認(rèn)格式是dos。
如果在Linux上使用,請(qǐng)使用vi命令編該文件,改為Unix格式。
第一步
上傳腳本文件到Linux系統(tǒng)后,使用vi命令編輯該腳本文件:
vi auto_deploy.sh
第二步
在Esc模式下冒號(hào)輸入命令set ff回車就能看到,該腳本是Windows系統(tǒng)的dos格式
如下圖:
第三步
在Esc模式下冒號(hào),輸入修改格式命令set ff=linux,然后回車(回車后Linux系統(tǒng)并沒有提示),完事后還是在Esc模式下輸入寫入保存命令:wq。
:set ff=linux
:wq
如下圖
三:腳本運(yùn)行截圖
服務(wù)非啟動(dòng)狀態(tài)下截圖
sh auto_deploy.sh
sh auto_deploy.sh stop
sh auto_deploy.sh status
服務(wù)啟動(dòng)狀態(tài)下截圖
sh auto_deploy.sh start
再次啟動(dòng)一下試試(此時(shí)會(huì)有提示:服務(wù)已經(jīng)啟動(dòng),啟動(dòng)狀態(tài)下請(qǐng)使用重啟命了):
查看狀態(tài)(提示正在運(yùn)行):
sh auto_deploy.sh status
重啟試試:
sh auto_deploy.sh restart
停掉服務(wù)試試:
sh auto_deploy.sh stop
再次輸入stop命令(給出提示:服務(wù)沒有運(yùn)行,沒必要停止?。?/p>
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
centos開機(jī)自動(dòng)啟動(dòng)RabbitMq軟件的方法
本文詳細(xì)講解了centos開機(jī)自動(dòng)啟動(dòng)RabbitMq軟件的方法,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以收藏下2021-11-11使用iptable和Firewalld工具來管理Linux防火墻連接規(guī)則
今天小編就為大家分享一篇關(guān)于使用iptable和Firewalld工具來管理Linux防火墻連接規(guī)則的文章,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧2018-09-09Linux下查看壓縮文件內(nèi)容的10種方法(小結(jié))
這篇文章主要介紹了Linux下查看壓縮文件內(nèi)容的10種方法(小結(jié)),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-11-11linux kernel 打印函數(shù)指針對(duì)應(yīng)的函數(shù)名方法
下面小編就為大家?guī)硪黄猯inux kernel 打印函數(shù)指針對(duì)應(yīng)的函數(shù)名方法。小編覺得挺不錯(cuò)的?,F(xiàn)在就分享給大家。也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-12-12解決啟動(dòng)php-fpm后訪問不到php文件的辦法
今天碰了一個(gè)很奇怪的問題,當(dāng)啟動(dòng)php-fpm后,發(fā)現(xiàn)居然訪問不到php文件了,后來通過查看日志、分析+搜索終于解決了,現(xiàn)在將整個(gè)過程分享給大家,也方便同樣遇到這個(gè)問題的同學(xué)們參考借鑒,下面來一起看看吧。2016-12-12詳解Linux用戶態(tài)與內(nèi)核態(tài)通信的幾種方式
這篇文章主要介紹了詳解Linux用戶態(tài)與內(nèi)核態(tài)通信的幾種方式,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2019-06-06centos系統(tǒng)安裝Kubernetes集群步驟
大家好,本篇文章主要講的是centos系統(tǒng)安裝Kubernetes集群步驟,感興趣的同學(xué)趕快來看一看吧,對(duì)你有幫助的話記得收藏一下,方便下次瀏覽2022-01-01