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,請(qǐng)修改此處的名稱為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 "請(qǐng)輸入您進(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)失敗!請(qǐ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)容,請(qǐng)?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)文章
Linux磁盤清理管理的實(shí)用命令和自動(dòng)腳本詳解
在Linux系統(tǒng)中,隨著時(shí)間推移,磁盤空間會(huì)被各種日志文件、緩存文件、臨時(shí)文件等占滿,本文將詳細(xì)介紹哪些類型的文件和目錄可以安全刪除以釋放磁盤空間,希望對(duì)大家有所幫助2025-10-10
centos配置開機(jī)自啟動(dòng)實(shí)現(xiàn)過程
以上內(nèi)容主要介紹了使用elasticsearch為例,編寫運(yùn)行腳本、配置執(zhí)行權(quán)限及開機(jī)自啟動(dòng)的方法,旨在為讀者提供參考2025-03-03
linux網(wǎng)站服務(wù)Apache的安裝與配置方法詳解
這篇文章介紹下linux網(wǎng)站服務(wù)apache的安裝與配置方法,本文分為四部分給大家介紹的非常詳細(xì),感興趣的朋友可以參考下2016-10-10
centos6.5配置ssh免秘鑰登陸執(zhí)行pssh命令的講解
今天小編就為大家分享一篇關(guān)于centos6.5配置ssh免秘鑰登陸執(zhí)行pssh命令的講解,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧2019-02-02
linux進(jìn)程監(jiān)控與自動(dòng)重啟的簡(jiǎn)單實(shí)現(xiàn)方法
這篇文章主要給大家介紹了關(guān)于linux進(jìn)程監(jiān)控與自動(dòng)重啟的簡(jiǎn)單實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用linux具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07
Linux KVM的QCOW2 和 ROW的詳解及區(qū)別介紹
這篇文章主要介紹了Linux QCOW2 和 ROW的詳解及區(qū)別介紹的相關(guān)資料,需要的朋友可以參考下2016-11-11

