#!/bin/sh
#. /etc/profile
run_user=“XXX”
base_dir="/XXX"
service_name=2servicepath="2
service_path="2servicepath="{base_dir}/erp/servicename.jar"servicepid="{service_name}.jar"
service_pid="servicename.jar"servicepid="{base_dir}/erp/servicename.pid"timenow=‘date+selfdir={service_name}.pid"
time_now=`date +%Y_%m_%d:%H:%M:%S`
self_dir=servicename.pid"timenow=‘date+selfdir=(cd “$(dirname “$0”)”; pwd)
server_port=$3
#spring boot 优雅停止,必须开启配置选项:endpoints.shutdown.enabled=true
spring_boot_enabled=true
#java_path="/usr/local/jdk/bin/java"
. /etc/profile
############### for pinpoint agent id ##############
local_ip(){
#获取本地ip地址
LOCAL_IP=ifconfig eth0|grep inet|awk '{print $2}'
#判断是否腾讯云地址
echo $LOCAL_IP|grep “^10.12[4-5].[0-9]{1,3}.[0-9]{1,3}” > /dev/null
if [ ?−ne0];thenecho"腾讯云内网地址不正确? -ne 0 ];then
echo "腾讯云内网地址不正确?−ne0];thenecho"腾讯云内网地址不正确LOCAL_IP"
exit 1
fi
#将IP地址转换为十六进制数,只取后三段
hex_ip=ip_to_hex ${LOCAL_IP:3}
}
#十六进制转换
ip_to_hex() {
printf ‘%02X’ ${1//./ }
}
local_ip
############### for pinpoint agent id ##############
if [ “$JAVA_OPTS” == “” ];then
JAVA_OPTS="-server -Xms512m -Xmx512m"
fi
############### for jvm opstions ###################
if [ -f selfdir/.appjvm];thenif["{self_dir}/.appjvm ];then
if [ "selfdir/.appjvm];thenif["service_name" == “” ];then
echo “参数错误:err_code 1”
exit 1
fi
while read line;do
tmp=echo $line | awk -F ',' '{print $1}'
tmp=echo $tmp | grep -v grep | egrep -e ^"${service_name}"$
if [ $? -eq 0 ];then
JAVA_OPTS=echo $line | awk -F ',' '{print $NF}'
#为pinpoin做name变量替换
JAVA_OPTS=echo $JAVA_OPTS |sed "s/HEX_IP_FLAG/$hex_ip/g"
JAVA_OPTS=echo $JAVA_OPTS |sed "s/SERVICE_NAME_FLAG/$service_name/g"
JAVA_OPTS=echo $JAVA_OPTS |sed "s/SERVICE_PORT_FLAG/$server_port/g"
fi
done < ${self_dir}/.appjvm
fi
############### for jvm opstions ###################
if [ whoami
!= “app” ]; then
echo “only app user can run !!!”
exit 1
fi
sprint_stop(){
if [[ “springbootenabled"=="true"]]thencurl−s−−connect−timeout2−m4−XPOSThttp://127.0.0.1:{spring_boot_enabled}" == "true" ]]
then
curl -s --connect-timeout 2 -m 4 -XPOST http://127.0.0.1:springbootenabled"=="true"]]thencurl−s−−connect−timeout2−m4−XPOSThttp://127.0.0.1:{server_port}/shutdown
fi
}
init(){
tmp_var=which java
if [ ?−ne0];thenecho"JDK缺失"exit1elsejavapath=? -ne 0 ];then
echo "JDK缺失"
exit 1
else
java_path=?−ne0];thenecho"JDK缺失"exit1elsejavapath=tmp_var
fi
tmp_var=cat /etc/passwd | egrep -e "^$run_user:"
if [ $? -ne 0 ];then
echo “运行用户不存在: $run_user”
exit 1
fi
tmp_var=ls $base_dir
if [ ?−ne0];thenecho"运行目录不存在? -ne 0 ];then
echo "运行目录不存在?−ne0];thenecho"运行目录不存在base_dir”
exit 1
fi
tmp_var=ls ${base_dir}/sh
if [ $? -ne 0 ];then
echo “脚本目录不存在/xxx/sh”
exit 1
fi
tmp_var=ls ${base_dir}/logs
if [ ?−ne0];thenecho"日志目录不存在? -ne 0 ];then
echo "日志目录不存在?−ne0];thenecho"日志目录不存在{base_dir}/logs"
exit 1
fi
}
start(){
init
status $service_name call
if [ $? -eq 0 ];then
if [ “KaTeX parse error: Expected 'EOF', got '\e' at position 57: … echo -e "已经运行:\̲e̲[1;31mservice_name\e[0m”
exit 1
fi
fi
tmp_var=ls $service_path 2> /dev/null
if [ KaTeX parse error: Expected 'EOF', got '\e' at position 32: … echo -e "未知应用:\̲e̲[1;31mservice_path\e[0m"
exit 1
fi
echo -e “正在启动:\e[1;31mKaTeX parse error: Expected 'EOF', got '\e' at position 13: service_name\̲e̲[0m"
if [ "server_port” -gt 0 ] 2>/dev/null ;then
nohup $java_path $JAVA_OPTS -jar servicepath−−server.port=service_path --server.port=servicepath−−server.port={server_port} >> basedir/logs/base_dir/logs/basedir/logs/service_name"-${server_port}-start.out" 2>&1 &
else
nohup $java_path $JAVA_OPTS -jar $service_path >> basedir/logs/base_dir/logs/basedir/logs/service_name"-start.out" 2>&1 &
fi
pid=$!
#echo $pid > $service_pid
for i in {1…5}; do
sleep 1s
tmp_var=ps -ef | grep -v grep | awk '{print $2}'| egrep ^${pid}$
if [ KaTeX parse error: Expected 'EOF', got '\e' at position 33: … echo -e "启动失败:\̲e̲[1;31mservice_name\e[0m"
exit 1
fi
done
echo -e “启动完成:\e[1;31mKaTeX parse error: Expected 'EOF', got '\e' at position 13: service_name\̲e̲[0m (pid:{pid})”
}
stop(){
status $service_name call
if [ $? -ne 0 ];then
if [ “KaTeX parse error: Expected 'EOF', got '\e' at position 60: … echo -e "已经停止:\̲e̲[1;31mservice_name\e[0m”
exit 1
fi
fi
echo -e “正在停止KaTeX parse error: Expected 'EOF', got '\e' at position 13: server_port:\̲e̲[1;31mservice_name\e[0m”
if [ “serverport"−gt0]2>/dev/null;thensprintstopps−ef∣grep−vgrep∣grep"server_port" -gt 0 ] 2>/dev/null ;then
sprint_stop
ps -ef | grep -v grep | grep "serverport"−gt0]2>/dev/null;thensprintstopps−ef∣grep−vgrep∣grep"service_path” | egrep “$server_port$” | awk '{print KaTeX parse error: Expected 'EOF', got '}' at position 2: 2}̲' | xargs kill
…service_path" | egrep "$server_port$"while [ $? -eq 0 ];do if [ $stat_num -ge 60 ];then ps -ef | grep -v grep | grep "$service_path" | egrep "$server_port\$" |awk '{print $2}' | xargs kill -9 fi sleep 1s let stat_num=$stat_num+1 tmp_var=
ps -ef | grep -v grep | grep "servicepath"∣egrep"service_path" | egrep "servicepath"∣egrep"server_port$“done echo -e "已经停止$server_port:\e[1;31m$service_name\e[0m" else ps -ef | grep -v grep | grep "$service_path" | awk '{print $2}' | xargs kill stat_num=1 tmp_var=
ps -ef | grep -v grep | grep “$service_path"while [ $? -eq 0 ];do if [ $stat_num -ge 60 ];then ps -ef | grep -v grep | grep "$service_path" | awk '{print $2}' | xargs kill -9 fi sleep 1s let stat_num=$stat_num+1 tmp_var=
ps -ef | grep -v grep | grep “KaTeX parse error: Expected 'EOF', got '\e' at position 39: … echo -e "已经停止:\̲e̲[1;31mservice_name\e[0m”
fi
}
status(){
if [ “serverport"−gt0]2>/dev/null;thentmpvar=‘ps−ef∣grep−vgrep∣grep"server_port" -gt 0 ] 2>/dev/null ;then
tmp_var=`ps -ef | grep -v grep | grep "serverport"−gt0]2>/dev/null;thentmpvar=‘ps−ef∣grep−vgrep∣grep"service_path” | egrep “$server_port$“else tmp_var=
ps -ef | grep -v grep | grep “$service_path"fi if [ $? -eq 0 ];then if [ "$2" == "call" ];then return 0 else echo -e "已经运行:\e[1;31m$service_name\e[0m" return 0 fi else if [ "$2" == "call" ];then return 1 else tmp_var=
ls $service_path 2> /dev/null`
if [ KaTeX parse error: Expected 'EOF', got '\e' at position 34: … echo -e "未知应用:\̲e̲[1;31mservice_path\e[0m”
return 1
fi
echo -e “已经停止:\e[1;31m$service_name\e[0m”
return 1
fi
fi
}
restart(){
stop $service_name call
sleep 2s
start $service_name call
}
help(){
echo “参数: $0”
echo " start service_name”
echo " stop service_name”
echo " restart service_name”
echo " status service_name”
}
$1 $2 $3 $4