#!/bin/bash
#-----------------------------------------------------------------------------------------------------------------#
#-CONFIG----------------------------------------------------------------------------------------------------------#
APP_DIR=$(cd "$(dirname "$0")"; pwd)
SCRIPT_DIR=$APP_DIR/bin/
LOG_DIR=$APP_DIR/logs/
JVM_ARGS="-server -Xms768m -Xmx1280m -XX:NewRatio=3 -XX:PermSize=96m -XX:MaxPermSize=128m -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:+CMSClassUnloadingEnabled -XX:+UseCMSCompactAtFullCollection -XX:CMSFullGCsBeforeCompaction=1 -XX:ParallelGCThreads=4 -XX:ParallelCMSThreads=4 -XX:CMSInitiatingOccupancyFraction=50 -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSMarkStackSize=8M -XX:CMSMarkStackSizeMax=32M -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintHeapAtGC -Xloggc:${APP_DIR}/logs/gc.log -Dio.netty.leakDetection.level=advanced -Dspring.profiles.active=dev -Dspring.profiles.address=192.168.0.153:8848 -Dspring.profiles.namespace=nacos的命名空间 -Ddubbo.protocol.host=192.168.0.153 -Dspring.cloud.inetutils.preferred-networks=192.168.0.153"
PID_FILE_DIR=$APP_DIR/run/
APP_NAME="com.xxxx.xxxx.WebApplication"
# Classpath
CLASSPATH=".:$APP_DIR/lib/*:"
NEWPATH="-classpath \"${CLASSPATH}\""
# System Path
#PATH="$JAVA_HOME/bin:$PATH"
#export PATH
${JAVA_HOME}/bin/java -version
echo
#-VARS------------------------------------------------------------------------------------------------------------#
APP=$2
#-FUNCTIONS-------------------------------------------------------------------------------------------------------#
getStatus() {
if [ -f $PID_FILE ] ; then
pid=`cat $PID_FILE`
if [ "x$pid" != "x" ] && kill -0 $pid 2>/dev/null ; then
return 0
fi
fi
return 1
}
printStatus() {
PID_FILE="${PID_FILE_DIR}${APP_NAME}.pid"
getStatus
if [ $? -eq 0 ]; then
echo "Active ${APP_NAME}"
else
echo "Inactive ${APP_NAME}"
fi
}
#-MAIN------------------------------------------------------------------------------------------------------------#
if [ "$1" = "start" ]; then
shift
PID_FILE="${PID_FILE_DIR}${APP_NAME}.pid"
getStatus
if [ $? -eq 0 ]; then
echo "Active ${APP_NAME} pid" `cat ${PID_FILE}`
else
${JAVA_HOME}/bin/java ${JVM_ARGS} ${NEWPATH} ${APP_NAME} #>> ${LOG_DIR}${APP_NAME}.log 2>&1 &
echo "Starting ${APP_NAME} at" `date` >> ${LOG_DIR}${APP_NAME}.log
echo "Starting ${APP_NAME}"
echo $! > $PID_FILE
fi
exit 0
elif [ "$1" = "list" ]; then
shift
echo "${APP_NAME}"
exit 0
elif [ "$1" = "kill" ]; then
shift
PID_FILE="${PID_FILE_DIR}${APP}.pid"
getStatus
if [ $? -eq 0 ]; then
kill `cat ${PID_FILE_DIR}${APP}.pid`
else
echo "${APP} Wasn't Active"
fi
exit 0
elif [ "$1" = "stop" ]; then
shift
PID_FILE="${PID_FILE_DIR}${APP_NAME}.pid"
getStatus
if [ $? -eq 0 ]; then
kill `cat ${PID_FILE}`
else
echo "${APP_NAME} Wasn't Active"
fi
exit 0
elif [ "$1" = "status" ]; then
shift
printStatus
exit 0
elif [ "$1" = "config" ]; then
shift
echo "Script dir : ${SCRIPT_DIR}"
echo "Where to log : ${LOG_DIR}"
echo "JVM args : ${JVM_ARGS}"
echo "Pidfile directory : ${PID_FILE_DIR}"
echo "Properties File : ${PROPERTIES_FILE}"
exit 0
else
echo ""
echo "Usage:"
echo "Runner {start|stop|list|kill {app}|status|config}"
echo " start - start all Applications"
echo " stop - stop all Applications"
echo " list - Prints a list of the application names":
echo " kill {app} - kill single app and restarts (useful when the jvm is not responding)"
echo " status - status Generate WebPageStatistics"
echo " config - show script config"
echo ""
exit 0
fi