Java服务启动脚本

jar包的启动、停止。

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

#!/bin/bash
OPERATE=$1
APP_NAME=$2
SYSTEM=`uname`
RUNNING="false";
FILE_PATH=${APP_NAME}
# 处理相对路径
if [ ${FILE_PATH:0:1} != "/" ]; then
FILE_PATH="`pwd`/${FILE_PATH}"
fi
# 检查应用是否在运行
function check() {
echo "check ${FILE_PATH} running status..."
if [ "${SYSTEM}" == 'Linux' ]; then
tpid=`ps -ef|grep -n " java.* ${FILE_PATH}"|grep -v grep|grep -v kill|awk '{print $2}'`
else
tpid=`ps -ef|grep -n " java.* ${FILE_PATH}"|grep -v grep|grep -v kill|awk '{print $3}'`
fi
if [ ${tpid} ]; then
echo "App ${FILE_PATH} is running."
RUNNING="true"
else
echo "App ${FILE_PATH} is NOT running."
RUNNING="false"
fi
}
# 启动程序
function start() {
# 用文件名作为 APP_NAME
APP_NAME=${FILE_PATH##*/}
APP_NAME=${APP_NAME%%.*}
# 检查是否已经存在
check
if [ ${RUNNING} == "true" ]; then
echo "App already running!"
else
echo "start..."
nohup java -jar -Dconfiguration.loggers.root.level=debug ${FILE_PATH} --name=${APP_NAME} --spring.profiles.active=prod --server.port=8991 > /dev/null 2>&1 &
check
echo "Start success!"
fi
}
# 停止程序
function stop() {
if [ ${SYSTEM} == 'Linux' ]; then
tpid=`ps -ef|grep -n " java.* ${FILE_PATH}"|grep -v grep|grep -v kill|awk '{print $2}'`
else
tpid=`ps -ef|grep -n " java.* ${FILE_PATH}"|grep -v grep|grep -v kill|awk '{print $3}'`
fi
if [ ${tpid} ]; then
echo 'Stop Process...'
kill -15 ${tpid}
# 检查程序是否停止成功
for ((i=0; i<10; ++i))
do
sleep 1
if [ ${SYSTEM} == 'Linux' ]; then
tpid=`ps -ef|grep -n " java.* ${FILE_PATH}"|grep -v grep|grep -v kill|awk '{print $2}'`
else
tpid=`ps -ef|grep -n " java.* ${FILE_PATH}"|grep -v grep|grep -v kill|awk '{print $3}'`
fi
if [ ${tpid} ]; then
echo -e ".\c"
else
echo 'Stop Success!'
break;
fi
done
# 强制杀死进程
if [ ${SYSTEM} == 'Linux' ]; then
tpid=`ps -ef|grep -n " java.* ${FILE_PATH}"|grep -v grep|grep -v kill|awk '{print $2}'`
else
tpid=`ps -ef|grep -n " java.* ${FILE_PATH}"|grep -v grep|grep -v kill|awk '{print $3}'`
fi
if [ ${tpid} ]; then
echo 'Kill Process!'
kill -9 ${tpid}
fi
else
echo 'App already stop!'
fi
}
function list () {
if [ ${APP_NAME} == "all" ]; then
if [ ${SYSTEM} == 'Linux' ]; then
ps -ef | grep -n "java.*--name="|grep -v grep|grep -v kill|awk '{printf $2"\t"$8"\t"} {split($11,b,"=");print b[2]}'
res=`ps -ef | grep -n "java.*--name="|grep -v grep|grep -v kill|awk '{printf $2"\t"$8"\t"} {split($11,b,"=");print b[2]}' `
else
ps -ef | grep -n "java.*--name="|grep -v grep|grep -v kill|awk '{printf $3"\t"$9"\t"} {split($12,b,"=");print b[2]}'
res=`ps -ef | grep -n "java.*--name="|grep -v grep|grep -v kill|awk '{printf $3"\t"$9"\t"} {split($12,b,"=");print b[2]}' `
fi
else
if [ ${SYSTEM} == 'Linux' ]; then
ps -ef | grep -n "java.*--name=${APP_NAME}$"|grep -v grep|grep -v kill|awk '{printf $2"\t"$8"\t"} {split($11,b,"=");print b[2]}'
res=`ps -ef | grep -n "java.*--name=${APP_NAME}$"|grep -v grep|grep -v kill|awk '{printf $2"\t"$8"\t"} {split($11,b,"=");print b[2]}' `
else
ps -ef | grep -n "java.*--name=${APP_NAME}$"|grep -v grep|grep -v kill|awk '{printf $3"\t"$9"\t"} {split($12,b,"=");print b[2]}'
res=`ps -ef | grep -n "java.*--name=${APP_NAME}$"|grep -v grep|grep -v kill|awk '{printf $3"\t"$9"\t"} {split($12,b,"=");print b[2]}' `
fi
fi
if [ -z "$res" ]; then
echo "None app running!"
fi
}
# 参数检查
if [ -z ${OPERATE} ] || [ -z ${APP_NAME} ];then
if [ -z ${OPERATE} ];
then
echo "OPERATE can not be null."
else
echo "APP_NAME can not be null."
fi
else
# 启动程序
if [ ${OPERATE} == "start" ]; then
start
# 停止程序
elif [ ${OPERATE} == "stop" ]; then
stop
# 重启程序
elif [ ${OPERATE} == "restart" ]; then
stop
start
# 检查查询运行状态
elif [ ${OPERATE} == "check" ]; then
check
# 查询所有项目
elif [ ${OPERATE} == "list" ]; then
list
else
echo "Not supported the OPERATE."
fi
fi