#!/bin/bash APP_NAME=app-1.0-SNAPSHOT.jar cd `dirname $0` cd .. STDOUT_FILE=/dev/null # 配置文件存放位置,如果有多个,则以逗号分隔 JAVA_PATH_OPTS=" -Dloader.path=config -Djava.io.tmpdir=./ " # 基础参数 JAVA_OPTS=" -Djava.awt.headless=true -Djava.net.preferIPv4Stack=true -Dfile.encoding=UTF-8 " # java调试 JAVA_DEBUG_OPTS="" if [ "$2" = "debug" ];then JAVA_DEBUG_OPTS=" -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8081 " fi # 内存配置 JAVA_MEM_OPTS="" BITS=`java -version 2>&1 | grep -i 64-bit` if [ -n "$BITS" ]; then JAVA_MEM_OPTS=" -server -Xms2g -Xmx2g -Xloggc:log/gc.log " fi # 使用说明,用来提示输入参数 usage() { echo "Usage: sh boot [APP_NAME] [start|stop|restart|status]" exit 1 } # 检查程序是否在运行 is_exist(){ # 获取PID PID=$(ps -ef |grep ${APP_NAME} | grep -v $0 |grep -v grep |awk '{print $2}') # -z "${pid}"判断pid是否存在,如果不存在返回1,存在返回0 if [ -z "${PID}" ]; then # 如果进程不存在返回1 return 1 els # 进程存在返回0 return 0 fi } # 定义启动程序函数 start(){ is_exist if [ $? -eq "0" ]; then echo "${APP_NAME} is already running, PID=${PID}" else nohup java -jar $JAVA_PATH_OPTS $JAVA_OPTS $JAVA_MEM_OPTS $JAVA_DEBUG_OPTS ${APP_NAME} >> ${STDOUT_FILE} 2>&1 & PID=$(echo $!) echo "${APP_NAME} start success, PID=$!" fi } # 停止进程函数 stop(){ is_exist if [ $? -eq "0" ]; then kill -9 ${PID} # 检测是否停止 COUNT=1 while [ $COUNT -eq 1 ] do echo -e ".\c" sleep 1 is_exist if [ -z "${PID}" ]; then COUNT=0 echo "${APP_NAME} process stop" fi done else echo "There is not the process of ${APP_NAME}" fi } # 重启进程函数 restart(){ stop start } # 查看进程状态 status(){ is_exist if [ $? -eq "0" ]; then echo "${APP_NAME} is running, PID=${PID}" else echo "There is not the process of ${APP_NAME}" fi } case $1 in "start") start ;; "stop") stop ;; "restart") restart ;; "status") status ;; *) usage ;; esac exit 0