Linux腳本啟動jar包方式
注意:
以下腳本筆者是在Windows上編輯的,因此默認格式是dos。
如果在Linux上使用,請使用vi命令編該文件,改為Unix格式。
筆者使用的SpringBoot + jsp 因此使用的是war包,如果你使用的是jar包,在文中用到war的地方改成jar就行。
一:腳本auto_deploy.sh
使用該腳本只需要修改JAR_NAME(改成自己的)、LOG_PATH(改成自己的)、腳本格式(改成Unix格式)這三點就行了。
#!/bin/bash
# 定義變量
# 要運行的jar包路徑,加不加引號都行。 注意:等號兩邊 不能 有空格,否則會提示command找不到
JAR_NAME="/xxx/xxx/xxx/xxx.war"
# 日志路徑,加不加引號都行。 注意:等號兩邊 不能 有空格,否則會提示command找不到
LOG_PATh=/export/Logs/main.log
# 如果輸入格式不對,給出提示!
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
}
# 啟動方法
start() {
# 重新獲取一下pid,因為其它操作如stop會導致pid的狀態(tài)更新
pid=`ps -ef | grep $JAR_NAME | grep -v grep | awk '{print $2}'`
# -z 表示如果$pid為空時執(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,因為其它操作如start會導致pid的狀態(tài)更新
pid=`ps -ef | grep $JAR_NAME | grep -v grep | awk '{print $2}'`
# -z 表示如果$pid為空時執(zhí)行。 注意:每個命令和變量之間一定要前后加空格,否則會提示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
}
# 輸出運行狀態(tài)方法
status() {
# 重新獲取一下pid,因為其它操作如stop、restart、start等會導致pid的狀態(tài)更新
pid=`ps -ef | grep $JAR_NAME | grep -v grep | awk '{print $2}'`
# -z 表示如果$pid為空時執(zhí)行。注意:每個命令和變量之間一定要前后加空格,否則會提示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,因為其它操作如start會導致pid的狀態(tài)更新
pid=`ps -ef | grep $JAR_NAME | grep -v grep | awk '{print $2}'`
# -z 表示如果$pid為空時執(zhí)行。 注意:每個命令和變量之間一定要前后加空格,否則會提示command找不到
if [ ! -z $pid ]; then
kill -9 $pid
fi
start
echo "....................Restart successfully!..........................."
}
# 根據(jù)輸入?yún)?shù)執(zhí)行對應方法,不輸入則執(zhí)行tips提示方法
case "$1" in
"start")
start
;;
"stop")
stop
;;
"status")
status
;;
"restart")
restart
;;
*)
tips
;;
esac注意事項:
- -z 命令表示如果$pid為空時執(zhí)行。 注意:每個命令和變量之間一定要前后加空格,否則會提示command找不到
- 要運行的jar包路徑,加不加引號都行。 注意:等號兩邊 不能 有空格,否則會提示command找不到
二:更改腳本格式
注意:以下腳本筆者是在Windows上編輯的,因此默認格式是dos。
如果在Linux上使用,請使用vi命令編該文件,改為Unix格式。
第一步
上傳腳本文件到Linux系統(tǒng)后,使用vi命令編輯該腳本文件:
vi auto_deploy.sh
第二步
在Esc模式下冒號輸入命令set ff回車就能看到,該腳本是Windows系統(tǒng)的dos格式
如下圖:


第三步
在Esc模式下冒號,輸入修改格式命令set ff=linux,然后回車(回車后Linux系統(tǒng)并沒有提示),完事后還是在Esc模式下輸入寫入保存命令:wq。
:set ff=linux
:wq
如下圖
![]()
三:腳本運行截圖
服務非啟動狀態(tài)下截圖
sh auto_deploy.sh

sh auto_deploy.sh stop

sh auto_deploy.sh status

服務啟動狀態(tài)下截圖
sh auto_deploy.sh start

再次啟動一下試試(此時會有提示:服務已經(jīng)啟動,啟動狀態(tài)下請使用重啟命了):

查看狀態(tài)(提示正在運行):
sh auto_deploy.sh status

重啟試試:
sh auto_deploy.sh restart

停掉服務試試:
sh auto_deploy.sh stop

再次輸入stop命令(給出提示:服務沒有運行,沒必要停止?。?/p>

總結
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
使用iptable和Firewalld工具來管理Linux防火墻連接規(guī)則
今天小編就為大家分享一篇關于使用iptable和Firewalld工具來管理Linux防火墻連接規(guī)則的文章,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2018-09-09
linux kernel 打印函數(shù)指針對應的函數(shù)名方法
下面小編就為大家?guī)硪黄猯inux kernel 打印函數(shù)指針對應的函數(shù)名方法。小編覺得挺不錯的?,F(xiàn)在就分享給大家。也給大家做個參考。一起跟隨小編過來看看吧2016-12-12
詳解Linux用戶態(tài)與內(nèi)核態(tài)通信的幾種方式
這篇文章主要介紹了詳解Linux用戶態(tài)與內(nèi)核態(tài)通信的幾種方式,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2019-06-06
centos系統(tǒng)安裝Kubernetes集群步驟
大家好,本篇文章主要講的是centos系統(tǒng)安裝Kubernetes集群步驟,感興趣的同學趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽2022-01-01

