java启动 守护进程_java守护进程启动和关闭脚本

#背景

之前做gms performance 测试的时候,由于测试经常无缘无故中断,而且google工程师写的shell脚本并未输出任何日志信息,以至于只能在脚本里面打log进行追踪问题,而那时本人对shell脚本语言没有任何基础,看起来很困难,但是这种组织语言的自动化和控制的艺术很吸引我,也是在那之后,对shell脚本产生了浓厚的兴趣,抽点时间写了一个守护进程的微型脚本。

# 程序名称

PROJECT_NAME=route

#程序路径

APP_HOME=$(dirname $(pwd))/$PROJECT_NAME

#java库目录

JAVA_LIB_PATH=$APP_HOME/resource/daemon/lib

#JAVA_HOME

JAVA_HOME=/home/software/jdk1.8

#依赖路径,route.jar中使用mf文件指定依赖jar包,否则就需要指定所有jar包

CLASS_PATH=$APP_HOME/resource/daemon/route.jar

#CLASS_PATH=$CLASS_PATH:$JAVA_LIB_PATH/netty-all-4.1.17.Final.jar

#CLASS_PATH=$CLASS_PATH:$JAVA_LIB_PATH/disruptor-3.2.1.jar

#CLASS_PATH=$CLASS_PATH:$JAVA_LIB_PATH/log4j-api-2.0.2.jar

#CLASS_PATH=$CLASS_PATH:$JAVA_LIB_PATH/log4j-core-2.0.2.jar

#参数

JAVA_OPTS=-Xms512m -Xmx512m -Xnoclassgc -Xverify:none

#程序入口类

MAIN_CLASS=com.dice.game.StartupWrapper

#程序ID文件

PID_FILE=${APP_HOME}/${PROJECT_NAME}.pid

#日志输出路径

LOG_FILE=${APP_HOME}/logs/${PROJECT_NAME}.out

#判断文件是否存在,如果不存在则创建

if [ ! -f "$PID_FILE" ]; then

touch "$PID_FILE"

echo 0 > $PID_FILE

fi

if [ ! -f "$LOG_FILE" ]; then

touch "$LOG_FILE"

fi

#输出

echo "service name: $PROJECT_NAME"

echo "app home: $APP_HOME"

echo "java home: $JAVA_HOME"

echo "class path: $CLASS_PATH"

echo "main class: $MAIN_CLASS"

echo "pid file : $PID_FILE"

pid=0

#获得pid

getpid() {

pid=`cat $PID_FILE`

}

#启动项目

start() {

getpid

if [ $pid -ne 0 ]; then

echo "================================"

echo "warn:  already started! or bad close last time!"

echo "================================"

fi

echo -n "Starting..."

nohup $JAVA_HOME/bin/java -server $JAVA_OPTS -classpath $CLASS_PATH $MAIN_CLASS >> $LOG_FILE 2>&1 & echo $! > $PID_FILE

getpid

if [ $pid -ne 0 ]; then

echo "================================="

echo "[Start Success] (pid=$pid)"

echo "================================"

else

echo "================================="

echo "[Start Failed]"

echo "================================="

fi

}

#关闭项目

#使用 kill -15 pid 方式来关闭进程,使得程序可以执行shutdownhook释放资源

stop() {

getpid

if [ $pid -ne 0 ]; then

skill -15 $pid

echo "================================"

echo "stoping"

echo "================================"

fi

}

##脚本入口

case "$1" in

'start')

start

;;

'stop')

stop

;;

*)

echo "Usage: $0 {start|stop}"

exit 1

esac

exit 0

今日推荐 满江的一首《归来》    ------>归去来兮情满江

2018.10.11

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值