#!/bin/sh
############################
# 服务发布脚本-JackieChan #
############################
OPT_TYPE=$1
echo "参数 $1=$OPT_TYPE"
PROJECT_NAME=$2
JAR_PID=
echo "参数 $2=$PROJECT_NAME"
BASE_PROJECT_NAME=${PROJECT_NAME%.*}
# 使用说明
usage() {
echo '****************************************************************'
echo "Usage: sh otc_release.sh [start|stop|restart|status] [file_name]"
echo '****************************************************************'
exit 1
}
# 检查
check(){
if [ -n "$PROJECT_NAME" ]; then
CHECK_PID=`ps -ef|grep java|grep "$PROJECT_NAME"|grep -v grep|grep -v ps|grep -v kill|awk '{print $2}'`
if [ ! "$CHECK_PID" ]; then
printf "$PROJECT_NAME 服务没有启动 "
else
printf "$PROJECT_NAME 服务进程号为:$CHECK_PID"
fi
else
printf "PROJECT_NAME参数为空"
exit 1
fi
JAR_PID=$CHECK_PID
}
# 启动
start(){
echo -e "********************$PROJECT_NAME start******************\n"
check
if [ -n "$JAR_PID" ]; then
echo -e "$PROJECT_NAME 正在运行...\n"
else
echo -e "$PROJECT_NAME 停止运行...\n"
nohup java -jar -Xms4096M -Xmx4096M -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=./$BASE_PROJECT_NAME.hprof $PROJECT_NAME --spring.profiles.active=uat >/dev/null 2>&1 &
echo -e "$PROJECT_NAME 启动成功!!!\n"
sleep 5
fi
echo -e "********************$PROJECT_NAME start******************\n"
}
# 状态
status(){
echo -e "********************$PROJECT_NAME status******************\n"
check
echo -e "********************$PROJECT_NAME status*******************\n"
}
# 重启
restart(){
echo -e "********************$PROJECT_NAME restart******************\n"
stop
start
echo -e "********************$PROJECT_NAME restart******************\n"
}
# 停止
stop(){
echo -e "********************$PROJECT_NAME stop*********************\n"
echo -e "检查$PROJECT_NAME是否启动:\n"
check
echo -e "停止 $PROJECT_NAME 服务,进程号为:[$JAR_PID]....."
if [ -n "$JAR_PID" ]; then
echo -e "$PROJECT_NAME 正在运行...\n"
kill -9 $JAR_PID
sleep 5
echo -e '检查服务进程号:\n'
check
else
echo -e "服务 $PROJECT_NAME 已经停止\n"
fi
echo -e "********************$PROJECT_NAME stop******************\n"
}
case "$1" in
"start")
start
;;
"stop")
stop
;;
"status")
status
;;
"restart")
restart
;;
*)
usage
;;
esac
ps -ef|grep
-
ps 命令的作用是显示进程信息的
-
| 符号,是个管道符号,表示ps 和 grep 命令同时执行;
-
grep 命令是查找(Global Regular Expression
Print),能使用正则表达式搜索文本,然后把匹配的行显示出来 -
grep -v 命令排除输出
-
JVM 调优
- -Xms4096m -Xmx4096m
设置heap大小
- -Xms4096m -Xmx4096m