java项目自动部署的启动和终止的脚本

前言

以下的启动脚本(start.sh)和终止脚本(stop.sh)参考自dubbo中提供的脚本。是为了方便自动部署,不需要手动的kill进程,防止出错。

启动脚本:start.sh


#!/bin/bash

# java home
export JAVA_HOME=/usr/java/jdk1.8.0_152

# get current dir
cd `dirname $0`
BIN_DIR=`pwd`
cd ..
DEPLOY_DIR=`pwd`
CONF_DIR=$DEPLOY_DIR/conf
LIB_DIR=$DEPLOY_DIR/lib
SERVER_NAME=`basename $DEPLOY_DIR`

PIDS=`ps -f | grep java | grep "$SERVER_NAME.jar" |awk '{print $2}'`
if [ -n "$PIDS" ]; then
    echo "ERROR: The $SERVER_NAME already started!"
    echo "PID: $PIDS"
    exit 1
fi

nohup $JAVA_HOME/bin/java -jar $SERVER_NAME.jar > /dev/null 2>&1 &

echo -e "Starting the $SERVER_NAME ...\c"
COUNT=0
while [ $COUNT -lt 1 ]; do    
    echo -e ".\c"
    sleep 1
    COUNT=`ps -f | grep java | grep "$SERVER_NAME.jar" | awk '{print $2}' | wc -l`
    if [ $COUNT -gt 0 ]; then
        break
    fi
done
echo "OK!"
PIDS=`ps -f | grep java | grep "$SERVER_NAME.jar" | awk '{print $2}'`
echo "PID: $PIDS"
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

终止脚本:stop.sh

#!/bin/bash

# java home
export JAVA_HOME=/usr/java/jdk1.8.0_152

# get current dir
cd `dirname $0`
BIN_DIR=`pwd`
cd ..
DEPLOY_DIR=`pwd`
CONF_DIR=$DEPLOY_DIR/conf
LIB_DIR=$DEPLOY_DIR/lib
SERVER_NAME=`basename $DEPLOY_DIR`

PIDS=`ps -f | grep java | grep "$SERVER_NAME.jar" |awk '{print $2}'`
if [ -z "$PIDS" ]; then
    echo "ERROR: The $SERVER_NAME does not started!"
    exit 1
fi

echo -e "Stopping the $SERVER_NAME ...\c"
for PID in $PIDS ; do
    kill $PID > /dev/null 2>&1
done

COUNT=0
while [ $COUNT -lt 1 ]; do    
    echo -e ".\c"
    sleep 1
    COUNT=1
    for PID in $PIDS ; do
        PID_EXIST=`ps -f -p $PID | grep java`
        if [ -n "$PID_EXIST" ]; then
            COUNT=0
            break
        fi
    done
done

echo "OK!"
echo "PID: $PIDS"
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
上次更新: 3 个月前