1
+ #! /bin/sh
2
+
3
+ os=` uname`
4
+ JAVA_HOME=$JAVA_HOME
5
+
6
+ APP_NAME=dhorse
7
+ JAR_NAME=$APP_NAME -rest-${project.version} .jar
8
+ DHORSE_HOME=` dirname " $bin " `
9
+ JAR_PATH=$DHORSE_HOME /lib/$JAR_NAME
10
+ CONF_PATH=$DHORSE_HOME /conf/$APP_NAME .yml
11
+
12
+ # jvm参数
13
+ JAVA_OPTS=" -server -Xms256m -Xmx256m -Xmn96m -XX:MetaspaceSize=64m -XX:MaxMetaspaceSize=128m"
14
+
15
+ dhorse_banner (){
16
+ echo " _ _ "
17
+ echo " | | | "
18
+ echo " __| | |__ ___ _ __ ___ ___ "
19
+ echo " / _\` | '_ \ / _ \| '__/ __|/ _ \\ "
20
+ echo " | (_| | | | | (_) | | \__ \ __/"
21
+ echo " \__,_|_| |_|\___/|_| |___/\___|"
22
+ echo " :: DHorse :: (v${project.version} )"
23
+ echo " "
24
+ }
25
+
26
+ # 如果没有指定data目录,则在当前的部署目录下创建
27
+ mkdir_data_path (){
28
+ data_path_config=` grep ' data.path' $DHORSE_HOME /conf/dhorse.yml`
29
+ if [[ ! $data_path_config =~ ^# ]]; then
30
+ key_value= (${data_path_config//:/ } )
31
+ data_path= ` echo " ${key_value[1]} " `
32
+ fi
33
+ if test -z " $data_path " ; then
34
+ data_path=$DHORSE_HOME /data
35
+ fi
36
+ if [ ! -d " $data_path " ]; then
37
+ mkdir $data_path
38
+ fi
39
+ }
40
+
41
+ is_exist () {
42
+ pid_number=$( ps -ef | grep $JAR_NAME | grep -v grep | awk ' {print $2}' )
43
+ # 如果不存在返回1,存在返回0
44
+ if test -z " $pid_number " ; then
45
+ return 1
46
+ else
47
+ return 0
48
+ fi
49
+ }
50
+
51
+ # 启动方法
52
+ start () {
53
+ dhorse_banner
54
+ if [[ -z " $JAVA_HOME " ]]; then
55
+ echo " JAVA_HOME could not be found"
56
+ exit 0
57
+ fi
58
+ echo " Starting $APP_NAME service, please wait a moment..."
59
+ is_exist
60
+ if test $? -eq " 0" ; then
61
+ echo " The $APP_NAME service is already running, pid is $pid_number "
62
+ else
63
+ mkdir_data_path
64
+ nohup $JAVA_HOME /bin/java $JAVA_OPTS -jar $JAR_PATH --spring.config.location=$CONF_PATH > /dev/null 2>&1 &
65
+ for i in {0..9}; do
66
+ if [[ $os == " Darwin" ]]; then
67
+ process=` lsof -a -p $! | grep $JAR_NAME | grep java`
68
+ else
69
+ process=` netstat -tlpn | grep $! `
70
+ fi
71
+ if test -z " $process " ; then
72
+ sleep 1
73
+ else
74
+ echo $! > $data_path /pid
75
+ echo " Start $APP_NAME service successfully, pid is $! "
76
+ exit 0
77
+ fi
78
+ done
79
+ echo " The $APP_NAME service startup failure"
80
+ fi
81
+ }
82
+
83
+ # 停止方法
84
+ stop () {
85
+ dhorse_banner
86
+ mkdir_data_path
87
+ if [ ! -f " $data_path /pid" ]; then
88
+ echo " The $APP_NAME service is not running"
89
+ return
90
+ fi
91
+ pidf=$( cat $data_path /pid)
92
+ if test -z " $pidf " ; then
93
+ echo " The $APP_NAME service is not running"
94
+ return
95
+ fi
96
+ echo " Stoping $APP_NAME service, pid is $pidf "
97
+ kill $pidf
98
+ rm -rf $data_path /pid
99
+ sleep 2
100
+ is_exist
101
+ if test $? -eq " 0" ; then
102
+ kill -9 $pid_number
103
+ sleep 2
104
+ echo " Stop $APP_NAME service successfully"
105
+ else
106
+ echo " Stop $APP_NAME service successfully"
107
+ fi
108
+ }
109
+
110
+ # 重启
111
+ restart (){
112
+ stop
113
+ start
114
+ }
115
+
116
+ # 输出运行状态
117
+ status (){
118
+ is_exist
119
+ if [ $? -eq " 0" ]; then
120
+ echo " The $APP_NAME service is running, pid is $pid_number "
121
+ else
122
+ echo " The $APP_NAME service is not running"
123
+ fi
124
+ }
125
+
126
+ # 根据输入参数,选择执行对应方法,不输入则执行使用说明
127
+ case " $1 " in
128
+ " start" )
129
+ start
130
+ ;;
131
+ " stop" )
132
+ stop
133
+ ;;
134
+ " status" )
135
+ status
136
+ ;;
137
+ " restart" )
138
+ restart
139
+ ;;
140
+ * )
141
+ echo " usage: [start | stop]"
142
+ ;;
143
+ esac
144
+ exit 0
0 commit comments