美文网首页工具
java守护进程启动和关闭脚本

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

作者: 一步拾光 | 来源:发表于2018-10-11 14:21 被阅读60次

#背景

       之前做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

相关文章

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

    #背景 之前做gms performance 测试的时候,由于测试经常无缘无故中断,而且google工程师写...

  • 后端操作汇总

    一、管理Java程序 启动java进程(关闭terminal程序会退出): 启动后台java进程(关闭termin...

  • 进程守护脚本

    进程守护脚本 新建脚本 编辑脚本 添加可执行权限 启动脚本

  • Android framework 学习流程

    Android开发环境与编译android.mkAndroid启动模式init启动分析init脚本执行和进程守护a...

  • APUE第13章 守护进程Deameon

    守护进程 守护进程daemon是一种生存周期很长的进程。它们通常在系统引导时启动,在系统关闭时终止。守护进程是没有...

  • 守护进程

    守护进程 什么是守护进程 守护进程是生存期长的一种进程.它们常常在系统引导装入时启动,仅在系统关闭时才终止.因为它...

  • Mac中的定时任务利器:launchctl

    launchctl是一个统一的服务管理框架,可以启动、停止和管理守护进程、应用程序、进程和脚本等。launchct...

  • MAC使用launchctl设置定时任务

    launchctl是一个统一的服务管理框架,可以启动、停止和管理守护进程、应用程序、进程和脚本等。launchct...

  • (二)hadoop脚本分析

    1.脚本分析 使用stop-dfs.sh和stop-yarn.sh关闭所有hadoop守护进程: 使用hadoop...

  • linux在后台执行脚本命令nohup & tmux

    ssh断开脚本会关闭 用nohup快速创建守护进程 yum install coreutils -y nohup...

网友评论

    本文标题:java守护进程启动和关闭脚本

    本文链接:https://www.haomeiwen.com/subject/kfsbaftx.html