#!/bin/bash
#系统jdk位置,替换为你实际
export JAVA_HOME=/usr/java/jdk1.8.0_201
export JRE_HOME=/$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin

#这里可替换为你自己的执行程序，其他代码无需更改
APP_PATH=/home/webcloud/fastweb
APP_POST={$APP_POST&}
APP_VERSION=v{$VERSION&}
JAR_NAME={$APP_NAME&}
APP_NAME=$APP_PATH/$JAR_NAME
#使用说明，用来提示输入参数
help() {
	echo -e "\033[31m######################################################################################\033[0m"
    echo -e "\033[32m#########Help: sh runFAST.sh [start|stop|restart|status|path|version]\033[0m"
    echo -e "\033[31m######################################################################################\033[0m"
    exit 1
}

#检查程序是否在运行
#
is_exist(){
	th=$1
	files=$(ls $path)
	for filename in $files
	do
	  tmp=${filename##*.}
	  if [ $tmp == 'jar' ]
	  then
	  	if [ $filename != $JAR_NAME ]
	  	then
	  	    pida=`ps -ef|grep $APP_PATH/$filename|grep -v grep|awk '{print $2}'`
	  	    
	  	          #如果不存在返回1，存在返回0     
		  	if [ -z "${pida}" ]; then
		   		mv $filename $APP_PATH/bak/
		    else
		    	kill -9 $pida
		    	sleep 1
		    	mv $filename $APP_PATH/bak/
		  	fi
	    fi
	  fi
	     
	  #清除缓存日志
	  if [ $tmp == 'out' ]
	  then
	  	rm -rf $filename
	  fi
	  
	done
  
    pid=`ps -ef|grep $APP_NAME|grep -v grep|awk '{print $2}'`
          #如果不存在返回1，存在返回0     
  	if [ -z "${pid}" ]; then
   		return 1
    else
    	return 0
  	fi
}

#启动方法
start(){
  is_exist
  if [ $? -eq 0 ]; then
    echo -e "\033[31m######################################################################################\033[0m"
    echo -e "\033[32m#########STP is Already Running. pid=${pid} . J2eeFAST正在运行!"
     echo -e "\033[31m######################################################################################\033[0m"
  else
  	echo -e "\033[31m######################################################################################\033[0m"
    echo -e "\033[32m#########运行版本${APP_VERSION}###################################\033[0m"
    #-Djava.library.path 若你的项目需要引用dll或os库 需要放在lib目录下面
    nohup java -Dfile.encoding=utf-8 -Djava.library.path=${APP_PATH}/lib -Xms1024m -Xmx1024m -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=256m -XX:+HeapDumpOnOutOfMemoryError -jar ${APP_NAME} >sysTemp.out 2>&1 &
    
    sleep 10
    
    is_exist
    
    if [ $? -eq 0 ]; then
        echo -e "\033[32m#########恭喜,启动成功!#########################################\033[0m"
    	echo -e "\033[31m######################################################################################\033[0m"
    else
    	echo -e "\033[32m#########启动失败,查看日志!#########################################\033[0m"
    	echo -e "\033[31m######################################################################################\033[0m"
    fi
  fi
}

#停止方法
stop(){
  is_exist
  if [ $? -eq "0" ]; then
    echo -e "\033[31m######################################################################################\033[0m"
  	echo -e "\033[32m#########J2eeFAST正在关闭...请稍后\033[0m"
    kill -9 $pid
    sleep 3
    echo -e "\033[32m#########成功关闭!\033[0m"
    echo -e "\033[31m######################################################################################\033[0m"
  else
    echo -e "\033[31m######################################################################################\033[0m"
    echo -e "\033[32m#########STP is Not Running, J2eeFAST已经停止!\033[0m"
    echo -e "\033[31m######################################################################################\033[0m"
  fi  
}

#输出运行状态
status(){
  is_exist
  if [ $? -eq "0" ]; then
    echo -e "\033[31m######################################################################################\033[0m"
    echo -e "\033[32m#########FASTOS is Running. Pid is ${pid}J2eeFAST正在运行!\033[0m"
    echo -e "\033[31m#####################################################################################\033[0m"
  else
    echo -e "\033[31m######################################################################################\033[0m"
    echo -e "\033[32m#########FASTOS is Not Running.J2eeFAST已经停止!\033[0m"
    echo -e "\033[31m######################################################################################\033[0m"
  fi
}

#重启
restart(){
  echo -e "\033[31m######################################################################################\033[0m"
  echo -e "\033[32m#########正在重启...,请稍后!\033[0m"
  stop
  sleep 5
  start
  echo -e "\033[32m#########J2eeFAST,重启成功!\033[0m"
  echo -e "\033[31m######################################################################################\033[0m"
}

#项目路径
path(){
	echo -e "\033[31m######################################################################################\033[0m"
    echo -e "\033[32m#########项目JAR路径PTAH:${APP_NAME} \033[0m"
    echo -e "\033[31m######################################################################################\033[0m"
}
#项目运行版本
vsrion(){
	echo -e "\033[31m######################################################################################\033[0m"
    echo -e "\033[32m#########项目版本:${APP_VERSION} \033[0m"
    echo -e "\033[31m######################################################################################\033[0m"
}
#项目端口
post(){
    echo -e "\033[31m######################################################################################\033[0m"
    echo -e "\033[32m#####################FASTOS监听前端端口:[${APP_POST}]#########################################\033[0m"
    echo -e "\033[31m######################################################################################\033[0m"
}

#根据输入参数，选择执行对应方法，不输入则执行使用说明
case "$1" in
  "start")
    start
    ;;
  "stop")
    stop
    ;;
  "status")
    status
    ;;
  "path")
    path
    ;;
  "version")
    vsrion
    ;;
  "post")
    post
    ;;
  "restart")
    restart
    ;;
  *)
    help
    ;;
esac