Linux啟動(dòng)Java程序jar包Shell腳本方式
Linux啟動(dòng)Java程序jar包Shell腳本
在Linux 環(huán)境中部署SpringBoot等Java項(xiàng)目時(shí)總是要重復(fù)的輸入一些命令
這里將命令編寫成一個(gè)可以執(zhí)行的shell腳本,只需要放置在和jar包同級(jí)別的目錄下,同時(shí)修改腳本內(nèi)置的一些變量后,方可正常使用
腳本使用
- 創(chuàng)建一個(gè)名為run.sh的腳本(腳本名稱根據(jù)自己想法即可),存放在與需要啟動(dòng)的jar包同級(jí)別目錄中
- 腳本內(nèi)容與本文提供的一致,記得修改APP_NAME參數(shù)的值
- 在存放路徑下輸入命令 bash run.sh status即可查看當(dāng)前jar包的運(yùn)行狀態(tài)
- 輸入命令 sh action.sh start即可運(yùn)行項(xiàng)目
- 命令一共支持四種,分別是:start|stop|restart|status
具體功能可以查看腳本代碼
#!/bin/bash
#這里替換為程序位置 #注意:APP_NAME為jar文件名(而非路徑),且"="后面不能有空格
#此處的APP_NAME為打包后jar包名
#注意:如果包名攜帶日期或其他會(huì)變化的內(nèi)容,例如xxxx-1.0.0.20221110.release.jar,請修改此處的名稱為xxxx這類固定且能標(biāo)識(shí)服務(wù)的名稱,同時(shí)替換start方法中的啟動(dòng)命令
APP_NAME=lcz.jar
#添加jar包路徑,方便在任何目錄下都可以運(yùn)行腳本啟動(dòng)服務(wù)
APP_PATH=/root/lcz
#使用說明,用來提示輸入?yún)?shù)
usage() {
echo "請輸入您進(jìn)行的操作: [start|stop|restart|status]"
echo "例如: bash/run.sh start"
exit 1
}
#檢查程序是否在運(yùn)行
is_exist(){
pid=`ps -ef|grep $APP_NAME|grep -v grep|awk '{print $2}'`
#如果不存在返回1,存在返回0
if [ -z "${pid}" ]; then
return 1
else
return 0
fi
}
#啟動(dòng)命令執(zhí)行后輸出結(jié)果
start_log(){
is_exist
if [ $? -eq 0 ]; then
echo "${APP_NAME} 啟動(dòng)成功! pid=${pid}"
tail ${APP_PATH}/run.log -f
else
echo "${APP_NAME} 啟動(dòng)失敗!請檢查后重試"
fi
}
#啟動(dòng)方法
start(){
is_exist
if [ $? -eq 0 ]; then
echo "${APP_NAME} is already running. pid=${pid}"
else
nohup java -jar -Xmx512m -Xms512m ${APP_PATH}/${APP_NAME} > ${APP_PATH}/run.log &
#如果APP_NAME攜帶可變內(nèi)容,請?zhí)鎿Q下方啟動(dòng)命令,符號(hào) * 表示jar包名稱中變化的部分
#nohup java -jar -Xmx512m -Xms512m ${APP_PATH}/${APP_NAME}*.jar >${APP_PATH}/run.log >/dev/null 2>&1 &
start_log
fi
}
#停止方法
stop(){
is_exist
if [ $? -eq "0" ]; then
kill -9 $pid
echo "${APP_NAME} 已關(guān)閉! pid=${pid}"
else
echo "${APP_NAME} is not running"
fi
#該腳本的特殊性:確保關(guān)閉所有openoffice進(jìn)程
soffice_stop
}
#輸出運(yùn)行狀態(tài)
status(){
is_exist
if [ $? -eq "0" ]; then
echo "${APP_NAME} is running. Pid is ${pid}"
else
echo "${APP_NAME} is not running."
fi
}
#重啟
restart(){
stop
echo "${APP_NAME} 準(zhǔn)備重啟..."
sleep 5
start
}
#關(guān)閉openoffice
soffice_stop(){
soffice_pid=`ps -e|grep soffice.bin |awk '{print $1}'`
if [ -n "${soffice_pid}" ]; then
kill -9 $soffice_pid
echo "已關(guān)閉soffice.bin"
fi
}
#根據(jù)輸入?yún)?shù),選擇執(zhí)行對(duì)應(yīng)方法,不輸入則執(zhí)行使用說明
case "$1" in
"start")
start
;;
"stop")
stop
;;
"status")
status
;;
"restart")
restart
;;
*)
usage
;;
esac
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
centos7切換啟動(dòng)內(nèi)核與切換啟動(dòng)模式的講解
今天小編就為大家分享一篇關(guān)于centos7切換啟動(dòng)內(nèi)核與切換啟動(dòng)模式的講解,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧2019-04-04
關(guān)于g++和gcc的相同點(diǎn)和區(qū)別詳解
下面小編就為大家?guī)硪黄P(guān)于g++和gcc的相同點(diǎn)和區(qū)別詳解。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-01-01
LNMP下FTP服務(wù)器的安裝與使用方法(Pureftpd和Proftpd)
FTP是網(wǎng)站文件維護(hù)中使用比較多的,目前LNMP一鍵安裝包中有Pureftpd和Proftpd服務(wù)器安裝腳本2013-06-06
Linux文件編輯命令vi詳細(xì)整理(總結(jié))
本篇文章主要介紹了Linux文件編輯命令詳細(xì)整理(總結(jié)),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-07-07
詳解如何在Ubuntu 20.04上安裝Xrdp服務(wù)器(遠(yuǎn)程桌面)
這篇文章主要介紹了詳解如何在Ubuntu 20.04上安裝Xrdp服務(wù)器(遠(yuǎn)程桌面),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-07-07
linux下通過Squid反向代理搭建CDN緩存服務(wù)器的配置方法
在移動(dòng)機(jī)房放置一臺(tái)CDN代理服務(wù)器,通過智能DNS解析,讓電信用戶直接訪問Web服務(wù)器、讓移動(dòng)用戶訪問CDN代理服務(wù)器,解決移動(dòng)用戶訪問Web服務(wù)器慢的問題2013-06-06

