linzhijie
2021-03-11 93af1c6ffb9ae0e894689ad3a37b548e57d54cff
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
#!/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