1
+ #! /bin/shell
2
+
3
+ # Copyright 2019-2029 geekidea(https://github.com/geekidea)
4
+ #
5
+ # Licensed under the Apache License, Version 2.0 (the "License");
6
+ # you may not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # http://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing, software
12
+ # distributed under the License is distributed on an "AS IS" BASIS,
13
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ # See the License for the specific language governing permissions and
15
+ # limitations under the License.
16
+
17
+ # ======================================================================
18
+ # Admin项目启动shell脚本
19
+ # config目录: 配置文件目录
20
+ # logs目录: 项目运行日志目录
21
+ # logs/spring-boot-plus_startup.log: 记录启动日志
22
+ # logs/back目录: 项目运行日志备份目录
23
+ # nohup后台运行
24
+ #
25
+ # author: geekidea
26
+ # date: 2020-3-28
27
+ # ======================================================================
28
+
29
+ # 项目名称
30
+ APPLICATION=" ${admin.artifact.name} "
31
+
32
+ # 项目启动jar包名称
33
+ APPLICATION_JAR=" ${APPLICATION} .jar"
34
+
35
+ echo ${APPLICATION_JAR}
36
+
37
+ # bin目录绝对路径
38
+ BIN_PATH=$( cd ` dirname $0 ` ; pwd)
39
+
40
+
41
+ # 进入bin目录
42
+ cd ` dirname $0 `
43
+ # 返回到上一级项目根目录路径
44
+ cd ..
45
+ # 打印项目根目录绝对路径
46
+ # `pwd` 执行系统命令并获得结果
47
+ BASE_PATH=` pwd`
48
+
49
+ # 外部配置文件绝对目录,如果是目录需要/结尾,也可以直接指定文件
50
+ # 如果指定的是目录,spring则会读取目录中的所有配置文件
51
+ CONFIG_DIR=${BASE_PATH} " /config/"
52
+
53
+ # 项目日志输出绝对路径
54
+ LOG_DIR=${BASE_PATH} " /logs"
55
+ LOG_FILE=" ${APPLICATION} .log"
56
+ LOG_PATH=" ${LOG_DIR} /${LOG_FILE} "
57
+ # 日志备份目录
58
+ LOG_BACK_DIR=" ${LOG_DIR} /back/"
59
+
60
+ # 项目启动日志输出绝对路径
61
+ LOG_STARTUP_PATH=" ${LOG_DIR} /${APPLICATION} _startup.log"
62
+
63
+ # 当前时间
64
+ NOW=$( date --date=' 0 days ago' " +%Y-%m-%d-%H-%M-%S" )
65
+ NOW_PRETTY=$( date --date=' 0 days ago' " +%Y-%m-%d %H:%M:%S" )
66
+
67
+ # 启动日志
68
+ STARTUP_LOG=" ================================================ ${NOW_PRETTY} ================================================\n"
69
+
70
+ # 如果logs文件夹不存在,则创建文件夹
71
+ if [ ! -d " ${LOG_DIR} " ]; then
72
+ mkdir " ${LOG_DIR} "
73
+ fi
74
+
75
+ # 如果logs/back文件夹不存在,则创建文件夹
76
+ if [ ! -d " ${LOG_BACK_DIR} " ]; then
77
+ mkdir " ${LOG_BACK_DIR} "
78
+ fi
79
+
80
+ # 如果项目运行日志存在,则重命名备份
81
+ if [ -f " ${LOG_PATH} " ]; then
82
+ mv ${LOG_PATH} " ${LOG_BACK_DIR} /${APPLICATION} _back_${NOW} .log"
83
+ fi
84
+
85
+ # 创建新的项目运行日志
86
+ echo " " > ${LOG_PATH}
87
+
88
+ # 如果项目启动日志不存在,则创建,否则追加
89
+ echo ${STARTUP_LOG} >> ${LOG_STARTUP_PATH}
90
+
91
+ # =======================================================
92
+ # 将命令启动相关日志追加到日志文件
93
+ # =======================================================
94
+
95
+ # 输出项目名称
96
+ STARTUP_LOG=" ${STARTUP_LOG} application name: ${APPLICATION} \n"
97
+ # 输出jar包名称
98
+ STARTUP_LOG=" ${STARTUP_LOG} application jar name: ${APPLICATION_JAR} \n"
99
+ # 输出项目bin路径
100
+ STARTUP_LOG=" ${STARTUP_LOG} application bin path: ${BIN_PATH} \n"
101
+ # 输出项目根目录
102
+ STARTUP_LOG=" ${STARTUP_LOG} application root path: ${BASE_PATH} \n"
103
+ # 打印日志路径
104
+ STARTUP_LOG=" ${STARTUP_LOG} application log path: ${LOG_PATH} \n"
105
+
106
+ # 打印启动命令
107
+ STARTUP_LOG=" ${STARTUP_LOG} application background startup command: nohup java -jar ${BASE_PATH} /lib/${APPLICATION_JAR} --spring.config.location=${CONFIG_DIR} > ${LOG_PATH} 2>&1 &\n"
108
+
109
+ # ======================================================================
110
+ # 执行启动命令:后台启动项目,并将日志输出到项目根目录下的logs文件夹下
111
+ # ======================================================================
112
+ nohup java -jar ${BASE_PATH} /lib/${APPLICATION_JAR} --spring.config.location=${CONFIG_DIR} > ${LOG_PATH} 2>&1 &
113
+
114
+ # 进程ID
115
+ PID=$( ps -ef | grep ${APPLICATION_JAR} | grep -v grep | awk ' { print $2 }' )
116
+ STARTUP_LOG=" ${STARTUP_LOG} application pid: ${PID} \n"
117
+
118
+ # 启动日志追加到启动日志文件中
119
+ echo -e ${STARTUP_LOG} >> ${LOG_STARTUP_PATH}
120
+ # 打印启动日志
121
+ echo -e ${STARTUP_LOG}
122
+
123
+ # 打印项目日志
124
+ tail -f ${LOG_PATH}
0 commit comments