#!/bin/sh

PROJECT_NAME=boshiyuan-api-viewwatch
APP_NAME=boshiyuan-api-viewwatch-1.0.jar
APP_PATH="/home/bsy/workplace/${PROJECT_NAME}"
#配置文件
CONFIG_PATH="-Dspring.config.location=${APP_PATH}/config/application.properties"
JAR_PATH="${APP_PATH}/${APP_NAME}"
LOG_PATH="${APP_PATH}/${PROJECT_NAME}.log"
#使用说明，用来提示输入参数
usage() {
    echo "Usage: sh serv-start.sh [start|stop|restart|status]"
    exit 1
}

#检查程序是否在运行
is_exist() { 
    pid=`ps -ef | grep $APP_NAME | grep -v grep | awk '{print $2}' `
    #echo "pid==${pid}"
    #如果不存在返回1，存在返回0
    if [ -z "${pid}" ]; then
        return 1
    else
        return 0
    fi
}
start(){
    echo "${APP_NAME} is start running......"
    nohup /usr/java/jdk1.8.0_311/bin/java -jar $CONFIG_PATH $JAR_PATH > $LOG_PATH 2>&1 &
    echo "run end ************"
}

#启动方法
start1() {
    echo "*********check is_exist in first*****"
    is_exist
    if [ $? -eq "0" ]; then
        echo "${APP_NAME} is already running. pid=${pid} ."
        kill $pid
        #sleep 5s
        kill -9 $pid
        echo "kill pid " $pid
    else
        echo "${APP_NAME} is start running......"
        #nohup java -Xmx512m -Xms512m -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/usr/local/application/smart-building-service/JeeSite-Web.dump -jar /usr/local/application/smart-building-service/JeeSite-Web.jar > /usr/local/application/smart-building-service/JeeSite-Web.log 2>&1 &
        nohup java -jar $CONFIG_PATH $APP_NAME > $PROJECT_NAME.log 2>&1 &
        sleep 8s
        echo "service run success ************"
    fi
}

#停止方法
stop() {
    is_exist
    if [ $? -eq "0" ]; then
        kill -9 $pid
        echo "${APP_NAME} is stop"
    else
        echo "${APP_NAME} is not running"
    fi
}

#输出运行状态
status() {
    is_exist
    if [ $? -eq "0" ]; then
        echo "${APP_NAME} is running. Pid is ${pid}"
    else
        echo "${APP_NAME} is not running."
    fi
}

#重启
restart() {
    stop
    start
}

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