#!/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