Java?Shell?springboot通用Shell啟動(dòng)腳本方式
前言
Spring boot 通用啟動(dòng)腳本,包含啟動(dòng),停止,重新啟動(dòng),查看狀態(tài)命令參數(shù)。
此腳本能自動(dòng)尋找與腳本在目錄下的jar包做為程序啟動(dòng)包。
自動(dòng)檢測(cè)java環(huán)境。
無需一定要在程序目錄下執(zhí)行腳本
Spring Boot Linux啟動(dòng)腳本
#!/bin/bash
SCRIPT_CALL_DIR=$(pwd)/
SCRIPT_FILENAME=${0##*/}
SCRIPT_DIR="$(dirname "$(readlink -f "$0")")/"
JAVA_CMD=`command -v java`
JAVA_OPTS="-Xms512m -Xmx512m -Dfile.encoding=utf-8"
#這里可替換為你自己的執(zhí)行程序,其他代碼無需更改,默認(rèn)查找此腳本同目錄jar文件,只取第一個(gè)
APP_NAME=`ls -l ${SCRIPT_DIR}|grep -e ".*[.]jar$"|head -n 1|awk '{print $9}'`
[ ! -z $APP_NAME ] && APP_NAME=$SCRIPT_DIR$APP_NAME
echo "============================================================"
echo "SCRIPT_CALL_DIR: $SCRIPT_CALL_DIR"
echo "SCRIPT_DIR: $SCRIPT_DIR"
echo "SCRIPT_FILENAME: $SCRIPT_FILENAME"
echo "JAVA_CMD: $JAVA_CMD"
echo "JAVA_OPTS: $JAVA_OPTS"
echo "APP_NAME: $APP_NAME"
echo "============================================================"
[ ! -e $JAVA_CMD ] && echo "沒有安裝java運(yùn)行環(huán)境" && exit 1
[ -z $APP_NAME ] && echo "沒有找到j(luò)ar程序包" && exit 1
#使用說明,用來提示輸入?yún)?shù)
usage() {
echo "Usage: sh startup.sh [start|stop|restart|status]"
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)方法
start(){
is_exist
if [ $? -eq 0 ]; then
echo "${APP_NAME} is already running. pid=${pid}"
else
#nohup java -jar ${APP_NAME} &
#Xms Xmx 指定虛擬內(nèi)存上下限
#nohup java -jar ${APP_NAME} >csls.out 2>&1 &
#nohup java -Xms512m -Xmx512m -Dfile.encoding=utf-8 -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=<ip>:<port> -Dspring.profiles.active=test -jar ${APP_NAME} > output.log 2>&1 &
cd ${SCRIPT_DIR}
# exec -c 創(chuàng)建新環(huán)境執(zhí)行程序,如此便不用在程序目錄下執(zhí)行啟動(dòng)命令了
exec -c nohup ${JAVA_CMD} ${JAVA_OPTS} -jar ${APP_NAME} > /dev/null 2>&1 &
is_exist
if [ $? -eq 0 ]; then
echo "${APP_NAME} is running success. pid=${pid}"
fi
fi
}
#停止方法
stop(){
is_exist
if [ $? -eq "0" ]; then
kill -9 $pid
is_exist
if [ $? -eq 0 ]; then
echo "${APP_NAME} still in the running. pid=${pid}"
else
echo "${APP_NAME} has stopped running."
fi
else
echo "${APP_NAME} is not running"
fi
}
#輸出運(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
start
}
#根據(jù)輸入?yún)?shù),選擇執(zhí)行對(duì)應(yīng)方法,不輸入則執(zhí)行使用說明
case "$1" in
"start")
start
;;
"stop")
stop
;;
"status")
status
;;
"restart")
restart
;;
*)
usage
;;
esac
tip: IDEA 遠(yuǎn)程代碼調(diào)適
-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=<ip>:<port>

使用示例及說明
此腳本要與運(yùn)行的springboot包放在同一目錄下,目錄結(jié)構(gòu)如下
. ├── config │ └── application.yml ├── data-batch-service.jar └── startup.sh
運(yùn)行sh startup.sh
sh startup.sh
結(jié)果如下
[dsp@tbase01 data-batch-service]$ sh startup.sh
============================================================
SCRIPT_CALL_DIR: /home/dsp/veshivue/pingan_weiwai/data-batch-service/
SCRIPT_DIR: /home/dsp/veshivue/pingan_weiwai/data-batch-service/
SCRIPT_FILENAME: startup.sh
JAVA_CMD: /tpmdm/software/service/jdk-11.0.6/bin/java
JAVA_OPTS: -Xms512m -Xmx512m -Dfile.encoding=utf-8
APP_NAME: /home/dsp/veshivue/pingan_weiwai/data-batch-service/data-batch-service.jar
============================================================
Usage: sh startup.sh [start|stop|restart|status]
運(yùn)行sh startup.sh start
sh startup.sh start
結(jié)果如下
[dsp@tbase01 data-batch-service]$ sh startup.sh start
============================================================
SCRIPT_CALL_DIR: /home/dsp/veshivue/pingan_weiwai/data-batch-service/
SCRIPT_DIR: /home/dsp/veshivue/pingan_weiwai/data-batch-service/
SCRIPT_FILENAME: startup.sh
JAVA_CMD: /tpmdm/software/service/jdk-11.0.6/bin/java
JAVA_OPTS: -Xms512m -Xmx512m -Dfile.encoding=utf-8
APP_NAME: /home/dsp/veshivue/pingan_weiwai/data-batch-service/data-batch-service.jar
============================================================
/home/dsp/veshivue/pingan_weiwai/data-batch-service/data-batch-service.jar is already running. pid=470201
運(yùn)行sh startup.sh stop
sh startup.sh stop
結(jié)果如下
[dsp@tbase01 data-batch-service]$ sh startup.sh stop
============================================================
SCRIPT_CALL_DIR: /home/dsp/veshivue/pingan_weiwai/data-batch-service/
SCRIPT_DIR: /home/dsp/veshivue/pingan_weiwai/data-batch-service/
SCRIPT_FILENAME: startup.sh
JAVA_CMD: /tpmdm/software/service/jdk-11.0.6/bin/java
JAVA_OPTS: -Xms512m -Xmx512m -Dfile.encoding=utf-8
APP_NAME: /home/dsp/veshivue/pingan_weiwai/data-batch-service/data-batch-service.jar
============================================================
/home/dsp/veshivue/pingan_weiwai/data-batch-service/data-batch-service.jar has stopped running.
運(yùn)行sh startup.sh restart
sh startup.sh restart
結(jié)果如下
[dsp@tbase01 data-batch-service]$ sh startup.sh restart
============================================================
SCRIPT_CALL_DIR: /home/dsp/veshivue/pingan_weiwai/data-batch-service/
SCRIPT_DIR: /home/dsp/veshivue/pingan_weiwai/data-batch-service/
SCRIPT_FILENAME: startup.sh
JAVA_CMD: /tpmdm/software/service/jdk-11.0.6/bin/java
JAVA_OPTS: -Xms512m -Xmx512m -Dfile.encoding=utf-8
APP_NAME: /home/dsp/veshivue/pingan_weiwai/data-batch-service/data-batch-service.jar
============================================================
/home/dsp/veshivue/pingan_weiwai/data-batch-service/data-batch-service.jar is not running
/home/dsp/veshivue/pingan_weiwai/data-batch-service/data-batch-service.jar is running success. pid=470863
運(yùn)行sh startup.sh status
sh startup.sh status
結(jié)果如下
[dsp@tbase01 data-batch-service]$ sh startup.sh status
============================================================
SCRIPT_CALL_DIR: /home/dsp/veshivue/pingan_weiwai/data-batch-service/
SCRIPT_DIR: /home/dsp/veshivue/pingan_weiwai/data-batch-service/
SCRIPT_FILENAME: startup.sh
JAVA_CMD: /tpmdm/software/service/jdk-11.0.6/bin/java
JAVA_OPTS: -Xms512m -Xmx512m -Dfile.encoding=utf-8
APP_NAME: /home/dsp/veshivue/pingan_weiwai/data-batch-service/data-batch-service.jar
============================================================
/home/dsp/veshivue/pingan_weiwai/data-batch-service/data-batch-service.jar is running. Pid is 470863
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
spring boot整合redis實(shí)現(xiàn)RedisTemplate三分鐘快速入門
這篇文章主要介紹了spring boot整合redis實(shí)現(xiàn)RedisTemplate三分鐘快速入門,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12
Mybatis中如何設(shè)置sqlSession自動(dòng)提交
在MyBatis中,默認(rèn)情況下,獲取的SqlSession對(duì)象不會(huì)自動(dòng)提交事務(wù),這意味著在進(jìn)行更新、刪除或插入等操作后,需要顯式調(diào)用commit方法來提交事務(wù),但是,可以在獲取SqlSession時(shí)通過將openSession方法的參數(shù)設(shè)置為true2024-09-09
Java實(shí)現(xiàn)文件分割和文件合并實(shí)例
本篇文章主要介紹了Java實(shí)現(xiàn)文件分割和文件合并實(shí)例,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-08-08
SpringBoot整合Redis使用RedisTemplate和StringRedisTemplate
Spring?Boot?Data(數(shù)據(jù))?Redis?中提供了RedisTemplate和StringRedisTemplate,其中StringRedisTemplate是RedisTemplate的子類,兩個(gè)方法基本一致。本文介紹了SpringBoot整合Redis使用RedisTemplate和StringRedisTemplate的方法,需要的可以參考一下2022-12-12
Java?8函數(shù)式接口之Consumer用法示例詳解
這篇文章主要為大家介紹了Java?8函數(shù)式接口之Consumer用法示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-07-07
Java BufferedImage轉(zhuǎn)換為MultipartFile方式
這篇文章主要介紹了Java BufferedImage轉(zhuǎn)換為MultipartFile方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-09-09

