#!/bin/bash error_exit(){echo -e "\033[31;1m ERROR: $1 !! \033[0m"exit1}CMD=$(basename $0)ACTION=$1FILENAME=$2PROFILES=$3case$ACTIONin
start);;
stop);;
status);;
restart);;
*)
error_exit "Usage: $CMD start|stop|status|restart";;esacif[ -z $FILENAME];then
error_exit "Usage: $CMD$ACTION 'FileName', Please pass in the path of the jar file"elseif[! -f $FILENAME];then
error_exit "$FILENAME Jar file not found, Please pass in the correct jar file path"fifiif["$PROFILES"=""];thenPROFILES="prod"fiBASE_DIR=$(dirname $FILENAME)if["$BASE_DIR"=="."];thenBASE_DIR=$(pwd)fiif[! -d "${BASE_DIR}/logs"];thenmkdir${BASE_DIR}/logs
fiSERVER=$(basename $FILENAME .jar)PID=$(ps -ef |grep java |grep ${SERVER}.jar |grep -v grep|awk'{print $2}')start(){if!kill -0 ${PID}2>/dev/null;then[! -e "$JAVA_HOME/bin/java"]&&JAVA_HOME=$HOME/jdk/java
[! -e "$JAVA_HOME/bin/java"]&&JAVA_HOME=/usr/local/jdk
[! -e "$JAVA_HOME/bin/java"]&&JAVA_HOME=/usr/local/java/jdk
[! -e "$JAVA_HOME/bin/java"]&&unset JAVA_HOME
if[ -z "$JAVA_HOME"];thenJAVA_PATH=$(dirname$(readlink -f $(which javac)))if["x$JAVA_PATH"!="x"];thenexportJAVA_HOME=$(dirname $JAVA_PATH 2>/dev/null)fiif[ -z "$JAVA_HOME"];then
error_exit "Please set the JAVA_HOME variable in your environment, We need java(x64)! jdk8 or later is better!"fifiexport JAVA_HOME
exportJAVA="$JAVA_HOME/bin/java"#=========================================================================================== # JVM Configuration #=========================================================================================== JAVA_OPT="${JAVA_OPT} -server -Xms512m -Xmx512m -Xmn256m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=512m" JAVA_OPT="${JAVA_OPT} -XX:-OmitStackTraceInFastThrow -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=${BASE_DIR}/logs/java_heapdump.hprof" JAVA_OPT="${JAVA_OPT} -XX:-UseLargePages -Dspring.profiles.active=$PROFILES"#JAVA_MAJOR_VERSION=$($JAVA -version 2>&1 | sed -E -n 's/.* version "([0-9]*).*$/\1/p') #if [[ "$JAVA_MAJOR_VERSION" -ge "9" ]] ; then # JAVA_OPT="${JAVA_OPT} -Xlog:gc*:file=${BASE_DIR}/logs/nacos_gc.log:time,tags:filecount=10,filesize=102400" #else # JAVA_OPT="${JAVA_OPT} -Djava.ext.dirs=${JAVA_HOME}/jre/lib/ext:${JAVA_HOME}/lib/ext" # JAVA_OPT="${JAVA_OPT} -Xloggc:${BASE_DIR}/logs/nacos_gc.log -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintGCTimeStamps -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=10 -XX:GCLogFileSize=100M" #fi JAVA_OPT="${JAVA_OPT} -jar ${BASE_DIR}/${SERVER}.jar"echo$JAVA_OPT#自定义外部配置文件启动 #export CUSTOM_CONFIG_LOCATIONS=file:${BASE_DIR}/application.yml #JAVA_OPT="${JAVA_OPT} --spring.config.location=${CUSTOM_CONFIG_LOCATIONS}" #echo "$JAVA ${JAVA_OPT} $SERVER" # start #nohup $JAVA ${JAVA_OPT} grape.service >/dev/null 2>&1 & nohup $JAVA ${JAVA_OPT} $SERVER >${BASE_DIR}/logs/console.log 2>&1 & echo -e "\033[32;1m Start '$SERVER' server success \033[0m"elseecho -e "\033[31;1m Failed to start '${SERVER}' server, Because it is running (pid:${PID}). \033[0m"fi}stop(){ifkill -0 ${PID}2>/dev/null;thenkill${PID}echo -e "\033[33;1m Killed ${SERVER} server \033[0m"elseecho -e "\033[31;1m Failed to stop ${SERVER} server, It is not running. \033[0m"fi}status(){ifkill -0 ${PID}2>/dev/null;thenecho -e "\033[32;1m ${SERVER} server (pid:${PID}) is running. \033[0m"elseecho -e "\033[31;1m ${SERVER} server is not running. \033[0m"fi}functionrestart(){
stop
sleep2
start
}case$ACTIONin
start)
start
;;
stop)
stop
;;
status)
status
;;
restart)
restart
;;
*)
error_exit "Usage: $CMD start|stop|status|restart";;esac
2、修改脚本权限
chmod u+x run
3、设置全局脚本
mv ./run /usr/bin
Windows
1、编写CMD命令
@echo off
if not exist "%JAVA_HOME%\bin\java.exe" echo Please set the JAVA_HOME variable in your environment, We need java(x64)! jdk8 or later is better! & EXIT /B 1
set "JAVA=%JAVA_HOME%\bin\java.exe"
set FILENAME=%1
if "%FILENAME%"=="" echo Usage: %0 'FileName', Please pass in the path of the jar file & EXIT /B 1
IF NOT EXIST %FILENAME% echo %FILENAME% Jar file not found, Please pass in the correct jar file path & EXIT /B 1
set SERVER=%~n1
set BASE_DIR=%~dp0
set "JAVA_OPT=-server -Xms512m -Xmx1024m -Xmn256m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=512m"
set "JAVA_OPT=%JAVA_OPT% -XX:-OmitStackTraceInFastThrow -XX:HeapDumpPath=%BASE_DIR%java_heapdump.hprof"
set "JAVA_OPT=%JAVA_OPT% -XX:-UseLargePages -Dspring.profiles.active=prod"
set "JAVA_OPT=%JAVA_OPT% -jar %BASE_DIR%%FILENAME%"
rem call "%JAVA%" %JAVA_OPT% %SERVER% %*echo "%JAVA%" %JAVA_OPT% %SERVER%
START "%SERVER%" %JAVA% %JAVA_OPT% %SERVER%