#!/usr/bin/env bash
|
# -----------------------------------------------------------------------------
|
# Author: guobiao8900@126.com
|
# date: 2019-10-22 10:39
|
# Desc: TAI Online Testing System Deploy
|
# -----------------------------------------------------------------------------
|
# Source function library.
|
. /etc/rc.d/init.d/functions
|
export LANG="en_US.UTF-8"
|
PROJECT_NAME=OTS
|
APP_NAME=manager
|
RUN_USER=root
|
PROG=${PROJECT_NAME}-${APP_NAME}
|
PID_FILE=/tmp/$PROG.pid
|
|
BASE_DIR=$(cd `dirname $0`; pwd)
|
APP_HOME=$(cd `dirname ${BASE_DIR}`; pwd)
|
|
APP_JAR=${APP_HOME}/main/*.jar
|
APP_CONF=${APP_HOME}/conf/
|
APP_LOG_DIR=/data/logs/${PROJECT_NAME}/${APP_NAME}
|
|
#JVM参数
|
JVM_OPTS="-Xms1024m -Xmx1024m -Xmn256m -Djava.awt.headless=true -XX:MaxPermSize=128m"
|
PORT=8090
|
|
[ -z "`grep $RUN_USER /etc/passwd`" ] && echo -e "error: user $RUN_USER does not exist"
|
|
[ -n "${APP_LOG_DIR}" ] && mkdir -pv ${APP_LOG_DIR} >/dev/null && chown -R ${RUN_USER}:${RUN_USER} ${APP_LOG_DIR} >/dev/null
|
|
if [ -f "${APP_CONF}/application.yml" ]; then
|
PORT="$(cat ${APP_CONF}/application.yml | grep server.port | tr -cd "[0-9]")"
|
fi
|
|
JAVA_CMD="java -jar ${APP_JAR}"
|
PARAMS="-Dspring.config.location=${APP_CONF} --daemon"
|
[ -n "$PORT" ] && PARAMS="$PARAMS --server.port=${PORT}"
|
[ -n "$JVM_OPTS" ] && PARAMS="$PARAMS ${JVM_OPTS}"
|
|
RETVAL=1
|
liv=
|
|
start() {
|
|
echo -n "Starting $PROG "
|
if [ $(whoami) == 'root' ]
|
then
|
echo "daemon --user $RUN_USER --pidfile $PID_FILE $JAVA_CMD $PARAMS"
|
daemon --user $RUN_USER --pidfile $PID_FILE "$JAVA_CMD $PARAMS 2>&1 &" > /dev/null
|
else
|
daemon --pidfile $PID_FILE "$JAVA_CMD $PARAMS 2>&1 &" > /dev/null
|
fi
|
RETVAL=$?
|
|
if [ $RETVAL = 0 ]
|
then
|
for ((i=0;i<30;i++))
|
do
|
if [ -n "$PORT" ]
|
then
|
liv=$(netstat -an | grep $PORT | grep LISTEN | grep -v grep | awk '{print $4}')
|
[ -n "$liv" ] && pid=$(ps -ef | grep -v grep | grep java | grep $APP_JAR | awk '{print $2}')
|
else
|
pid=$(ps -ef | grep -v grep | grep java | grep $APP_JAR | awk '{print $2}')
|
fi
|
if [ -n "$pid" ]
|
then
|
echo $pid > "$PID_FILE";
|
chown ${RUN_USER}:${RUN_USER} "$PID_FILE";
|
RETVAL=0
|
break
|
fi
|
RETVAL=1
|
sleep 1
|
done
|
fi
|
|
if [ $RETVAL -eq 0 ]
|
then
|
action $"pid: $pid" /bin/true
|
else
|
action $"" /bin/false
|
fi
|
return $RETVAL
|
|
}
|
|
stop() {
|
[ -f "$PID_FILE" ] && local pid=$(cat $PID_FILE)
|
if [ -f $PID_FILE ]; then
|
killproc -p $PID_FILE
|
RETVAL=$?
|
fi
|
|
if [ $RETVAL -eq 0 ]; then
|
action "Stopping $PROG pid: $pid" /bin/true
|
[ -f $PID_FILE ] && rm -rf $PID_FILE
|
elif [ $RETVAL -ne 0 ]; then
|
action "Stopping $PROG" /bin/false
|
RETVAL=1
|
fi
|
return $RETVAL
|
}
|
|
|
restart() {
|
rh_status
|
status=$(rh_status| tr -cd "[0-9]")
|
[ -n "$status" ] && stop
|
sleep 2
|
start
|
}
|
|
rh_status() {
|
status -p $PID_FILE $APP_NAME
|
}
|
|
rh_status_q() {
|
rh_status >/dev/null 2>&1
|
}
|
|
case "$1" in
|
start)
|
(rh_status_q && rh_status ) && exit 0
|
$1
|
;;
|
stop)
|
(rh_status_q || rh_status )|| exit 0
|
$1
|
;;
|
restart)
|
$1
|
;;
|
status)
|
rh_status
|
;;
|
*)
|
echo $"Usage: $0 {start|stop|status|restart}"
|
exit 2
|
;;
|
esac
|