service.sh
4.12 KB
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
135
#!/bin/bash
source /etc/profile
BASE_HOME=/opt
APP_NAME=crp-operation
APP_HOME=${BASE_HOME}/${APP_NAME}
APP_VERSION=1.0.0
SERVICE_NAME=${APP_NAME}
LOG_HOME=${APP_HOME}/logs
LOG_PATH=${LOG_HOME}/${APP_NAME}
ENV_LIST=("default" "dev" "test" "prod")
SERVICE_LIB=${APP_HOME}/lib
SERVICE_CONF=${APP_HOME}/conf
SERVICE_RESOURCES=${APP_HOME}/resources
if [[ -n "$2" ]]; then
PROJECT_ENV=$2
else
PROJECT_ENV="dev"
fi
safemkdir(){
if [[ ! -d $1 ]] ; then
mkdir -p $1
fi
}
# Production config
if [[ "$PROJECT_ENV" == "prod" ]]; then
JAVA_OPTIONS="-server -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=$LOG_PATH -Xms128M -Xmx256M -Xmn512M -XX:MetaspaceSize=256M -XX:MaxMetaspaceSize=256M -XX:+DisableExplicitGC -XX:SurvivorRatio=8 -XX:LargePageSizeInBytes=128M -XX:SoftRefLRUPolicyMSPerMB=0 "
else
JAVA_OPTIONS="-server -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=$LOG_PATH -Xms128M -Xmx256M -Xmn128M -XX:MetaspaceSize=128M -XX:MaxMetaspaceSize=256M -XX:+DisableExplicitGC -XX:SurvivorRatio=8 -XX:LargePageSizeInBytes=128M -XX:SoftRefLRUPolicyMSPerMB=0"
fi
if [[ "$PROJECT_ENV" == "dev" || "$PROJECT_ENV" == "test" ]]; then
JAVA_OPTIONS="-Xdebug -Xrunjdwp:transport=dt_socket,address=$REMOTE_PORT,server=y,suspend=n $JAVA_OPTIONS"
fi
JAVA_OPTIONS="-XX:ErrorFile=$LOG_PATH/hs_err_pid%p.log $JAVA_OPTIONS -Dspring.cloud.inetutils.ignored-interfaces=lo.* -Dspring.config.additional-location=$SERVICE_CONF/ -Dspring.profiles.active=$PROJECT_ENV -Dapp.name=$APP_NAME -Dlog.home=$LOG_HOME -Denv=$PROJECT_ENV -Djava.security.egd=file:/dev/./urandom"
export CLASSPATH=${CLASSPATH}:${SERVICE_CONF}:${SERVICE_RESOURCES}
export JAVA_OPTIONS
export PID_FILE=${APP_HOME}/.pid/${APP_NAME}.pid
dateFormat=$(date '+%Y-%m-%d')
safemkdir ${APP_HOME}/.pid/
safemkdir ${LOG_PATH}/
ACCESS_LOG=${LOG_PATH}/${dateFormat}.info.log
ERROR_LOG=${LOG_PATH}/${dateFormat}.error.log
hint="Usage: start "
hasEnv=0
checkEnvParam(){
for env_name in ${ENV_LIST[@]};do
if [[ "${env_name}" == "$1" ]] ; then
hasEnv=1
fi
done
}
getUsageHint(){
for env_name in ${ENV_LIST[@]};do
hint=${hint}${env_name}" or "
done
hint=${hint}"|stop|log|error"
}
checkEnvParam $2
getUsageHint
started="#################################################################################\n
Application [${APP_NAME}] for environment [${PROJECT_ENV}] Started At $(date) \n
##################################################################################\n"
stopped="#################################################################################\n
Application [${APP_NAME}] Stopped At $(date) \n
##################################################################################\n"
if [[ "$1" == "start" ]]; then
if [[ "${hasEnv}" == 0 ]]; then
echo ${hint}
exit 0
fi
if [[ ! -f "$PID_FILE" ]]; then
echo -e ${started} | tee -a ${ACCESS_LOG}
nohup java ${JAVA_OPTIONS} ${SCOUNT_CONFIG} -jar ${APP_HOME}/lib/${APP_NAME}-${APP_VERSION}.jar 1>> ${ACCESS_LOG} 2>> ${ERROR_LOG} 2>&1 &echo $! > ${PID_FILE}
sleep 10
tail -n 300 ${ACCESS_LOG}
else
echo "$APP_NAME service already started, please stop first and try again"
fi
elif [[ "$1" == "stop" ]]; then
if [[ -f "$PID_FILE" ]]; then
echo -e ${stopped} | tee -a ${ACCESS_LOG}
cat ${PID_FILE} | xargs kill -9
rm ${PID_FILE}
echo "$APP_NAME stop : [OK]"
else
echo "$APP_NAME service not started yet, please start first and try again"
fi
elif [[ "$1" == "log" ]]
then if [[ "$2" == "error" ]]
then
tail -f ${ERROR_LOG}
else
tail -f ${ACCESS_LOG}
fi
elif [[ "$1" == "-v" ]]; then
echo ${APP_VERSION}
elif [[ "$1" == "status" ]]; then
pid=`cat ${PID_FILE}`
if [[ $? -eq 0 ]]; then
p_status=`ps -p ${pid}`
if [[ $? -eq 0 ]]; then
echo "Application [${APP_NAME}] is running, pid : ${pid}."
else
echo "Application [${APP_NAME}] is not running."
fi
else
echo "Application [${APP_NAME}] is not running."
fi
else
echo ${hint}
fi