#!/bin/sh
#arthor:zhuyanepng
# java 环境 shell脚本有可能获取不到指定的java
export JAVA_HOME=/usr/local/jdk1.8.0_72


## 服务相关参数
SERVICE_DIR=/tomcat/jars/data-center
SERVER_PORT=14501
APP_NAME=data-center-1.0.0-SNAPSHOT
JAR_NAME=$SERVICE_DIR/$APP_NAME\.jar
PID=$APP_NAME\.pid
# 日志路径
date_str=./logs/out_`date +%Y-%m-%d-%H`.log
CURRENT_LOG=./logs/out.log

# 查看程序 资源占比
function show(){
   #根据 ps aux 列出其信息 根据 grep -v grep 做信息过滤 根据awk 做数据拼接
  MSG=`ps aux|grep "$APP_NAME"|grep -v grep|awk '{ print "the cpu:[" $3 "%] the memory:[" $4 "%]the memory:[" $6 "kb]the start time is[" $9 "]"}'`
  echo "$MSG"
}
# debug
function debug(){
  #将当前日志目录中的日志备份然后创建一个新的
  if [ -f $CURRENT_LOG ];then
     echo '找到了一个旧文件'
     mv $CURRENT_LOG $date_str
  fi
  nohup $JAVA_HOME/bin/java  -XX:+UseG1GC -Dfile.Encoding=utf-8 -Xmx1024m -Xms1024m -jar $JAR_NAME > $CURRENT_LOG 2>&1 --server.port=$SERVER_PORT &
  # 通过$! 获得执行的PID 写到 .pid文件中去 之后删除使用
  echo $! > $SERVICE_DIR/$PID
  echo "============>start $JRE_NAME ok!!! current log file is $date_str!!! current process is $SERVICE_DIR "
  tail -200f $CURRENT_LOG
}
# 启动函数 start
function start(){
  nohup $JAVA_HOME/bin/java -XX:+UseG1GC -Dfile.Encoding=utf-8 -Xmx1024m -Xms1024m -jar $JAR_NAME > $date_str 2>&1 --server.port=$SERVER_PORT &
  # 通过$! 获得执行的PID 写到 .pid文件中去 之后删除使用
  echo $! > $SERVICE_DIR/$PID
  echo "============>start $JRE_NAME ok!!! "
}
# 停止函数 stop
function stop(){
  #一般情况下PID文件下记录的就是进程号但是为了怕错还是自己去查一边
  # 运行查询日志命令 以宽度模式输出全路径 获得打印的第二位的值
  PORT_ID=`ps -ef|grep -w "$JAR_NAME"|grep -v grep|awk '{print $2}'`
  echo "========>ths PORT:$PORT_ID"
  if [ -z "$PORT_ID" ];then
    echo "===> the $APP_NAME process not exists OR stop success"
  else
   kill `cat $SERVICE_DIR/$PID`
   kill -9 $PORT_ID
   rm -rf $SERVICE_DIR/$PID
   echo "====> the $APP_NAME process stop success"
  fi
}  
#检测用户携带参 判断进行的函数
cd $SERVICE_DIR
case "$1" in
  start)
    start
    ;;
  stop)
    stop
    ;;
  debug)
    debug
    ;;
  redebug)
    stop ;
    sleep 5
    debug
    ;;
  restart)
    stop ;
   sleep 5
    start
   ;;
    
  show)
    show
   ;;
  *)
    echo "please server-ws start|stop|restart|show"
   ;;
esac




exit 0
