使用linux?java?shell啟動(dòng)腳本
Java 啟動(dòng)腳本
Linux shell
#!/bin/bash #=========================================================================================== # configuration #=========================================================================================== APP_NAME=Project-1.0.0.jar #修改app名稱(chēng) #JAVA_HOME=/usr/local/jdk-11.0.2 #jdk位置 配了環(huán)境變量可以不設(shè)置,沒(méi)有環(huán)境變量需要開(kāi)啟,指向jdk路徑 LOG_DIR=logs #日志目錄 OPEN_GCLOG=false #是否開(kāi)啟gc日志 OPEN_OOM_DUMP=false #是否開(kāi)啟out of memory OPEN_START_LOG=false #是否開(kāi)啟啟動(dòng)日志 OPEN_ILLEGAL_REFLEX_WARNING=false #是否關(guān)閉反射警告 #=========================================================================================== # init val #=========================================================================================== export JAVA_HOME BASE_DIR=$(dirname $(readlink -f "$0")) APP_FULLNAME="${BASE_DIR}/${APP_NAME}" JAVA="${JAVA_HOME}/bin/java" JAVA_MAJOR_VERSION=$($JAVA -version 2>&1 | sed -E -n 's/.* version "([0-9]*).*$/\1/p') JAVA_OPT= #=========================================================================================== # check jdk #=========================================================================================== error_exit () { echo "ERROR: $1 !!" exit 1 } if [ -z "${JAVA_HOME}" ]; then error_exit "Please set the JAVA_HOME variable in your environment, We need java(x64)! jdk8 or later is better!" fi #=========================================================================================== # init flags #=========================================================================================== init_flags() { for x in "$@" do if [ $x = "-gc" ]; then OPEN_GCLOG=true fi if [ $x = "-oom" ]; then OPEN_OOM_DUMP=true fi if [ $x = "-sl" ]; then OPEN_START_LOG=true fi if [ $x = "-iw" ]; then OPEN_ILLEGAL_REFLEX_WARNING=true fi done } init_flags $@ #=========================================================================================== # common func #=========================================================================================== build_java_opt() { if $OPEN_GCLOG; then if [[ "$JAVA_MAJOR_VERSION" -ge "9" ]]; then JAVA_OPT="${JAVA_OPT} -Xlog:gc*:file=${BASE_DIR}/${LOG_DIR}/gc.log:time:filecount=10:filesize=100m" else JAVA_OPT="${JAVA_OPT} -Xloggc:${BASE_DIR}/${LOG_DIR}/gc.log -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintGCTimeStamps -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=10 -XX:GCLogFileSize=100M" fi fi if $OPEN_ILLEGAL_REFLEX_WARNING; then if [[ "$JAVA_MAJOR_VERSION" -ge "9" ]]; then JAVA_OPT="${JAVA_OPT} --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.math=ALL-UNNAMED" fi fi if $OPEN_OOM_DUMP; then JAVA_OPT="${JAVA_OPT} -XX:-OmitStackTraceInFastThrow -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=${BASE_DIR}/${LOG_DIR}/heapdump.hprof" fi JAVA_OPT="${JAVA_OPT} -Dloader.path=.,resources,lib" JAVA_OPT="${JAVA_OPT} -Djava.library.path=." } ensure_log_dir() { if [ ! -e ${BASE_DIR}/${LOG_DIR} ]; then mkdir ${BASE_DIR}/${LOG_DIR} fi } build_java_opt ensure_log_dir #=========================================================================================== # Application #=========================================================================================== #使用說(shuō)明,用來(lái)提示輸入?yún)?shù) help() { echo "help: sh 執(zhí)行腳本.sh [start|stop|restart|status]" echo "-gc:open save gc logs" echo "-oom:open out of memory" echo "-sl:open save start log" echo "-iw:open illegal reflex warning" exit 1 } #檢查程序是否在運(yùn)行 is_exist(){ pid=`ps -ef|grep ${APP_FULLNAME}|grep -v grep|awk '{print $2}' ` #如果不存在返回1,存在返回0 if [ -z "${pid}" ]; then return 1 else return 0 fi } #啟動(dòng)方法 start(){ build_java_opt ensure_log_dir is_exist if [ $? -eq "0" ]; then echo "${APP_NAME} is already running. pid=${pid} ." else if $OPEN_START_LOG; then nohup "${JAVA}" -jar ${JAVA_OPT} "${BASE_DIR}/${APP_NAME}" > ${BASE_DIR}/${LOG_DIR}/startup.log 2>&1 & else nohup "${JAVA}" -jar ${JAVA_OPT} "${BASE_DIR}/${APP_NAME}" > /dev/null 2>&1 & fi is_exist if [ $? -eq "0" ]; then echo "${APP_NAME} is start success..." else echo "${APP_NAME} is start failed..." fi fi } #停止方法 stop(){ is_exist if [ $? -eq "0" ]; then kill -9 $pid echo "${APP_NAME} is stoped..." 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í)行使用說(shuō)明 case "$1" in "start") start ;; "stop") stop ;; "status") status ;; "restart") restart ;; *) help ;; esac
以上就是使用linux java shell啟動(dòng)腳本的詳細(xì)內(nèi)容,更多關(guān)于linux java shell啟動(dòng)腳本的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Linux中的host命令應(yīng)用實(shí)例詳解
這篇文章主要介紹了Linux中的host命令應(yīng)用舉例的相關(guān)資料,需要的朋友可以參考下2017-07-07淺析Linux系統(tǒng)下安裝wetty和使用說(shuō)明
本篇文章主要給大家介紹linux系統(tǒng)下安裝wetty和使用說(shuō)明,以及l(fā)inux tty命令學(xué)習(xí)總結(jié),感興趣的朋友跟著小編一起學(xué)習(xí)吧2015-10-10linux上配置jdk時(shí),java命令提示沒(méi)有此文件或文件夾的解決方法
下面小編就為大家?guī)?lái)一篇linux上配置jdk時(shí),java命令提示沒(méi)有此文件或文件夾的解決方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-05-05Linux共享內(nèi)存實(shí)現(xiàn)機(jī)制的詳解
這篇文章主要介紹了Linux共享內(nèi)存實(shí)現(xiàn)機(jī)制的詳解的相關(guān)資料,需要的朋友可以參考下2017-07-07awk正則表達(dá)式和內(nèi)置函數(shù)的使用方法實(shí)例詳解
這篇文章主要介紹了awk正則表達(dá)式和內(nèi)置函數(shù)的使用方法實(shí)例詳解,本文總結(jié)了15個(gè)使用例子,需要的朋友可以參考下2014-12-12Shell腳本實(shí)現(xiàn)精準(zhǔn)清除Squid緩存
這篇文章主要介紹了Shell腳本實(shí)現(xiàn)精準(zhǔn)清除Squid緩存,本文腳本是張宴同學(xué)腳本的個(gè)人優(yōu)化版,生產(chǎn)環(huán)境使用效果不錯(cuò),所以分享給大家,需要的朋友可以參考下2015-01-01linux shell(.sh)腳本編寫(xiě)和運(yùn)行入門(mén)
這篇文章主要介紹了linux shell(.sh)腳本編寫(xiě)和運(yùn)行入門(mén),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-09-09