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