技圈网

当前位置»首页 » Linux

使用linux java shell启动脚本

目录

Java 启动

Linux shell

#!/bin/bash#===========================================================================================# configuration#===========================================================================================APP_NAME=Project-1.0.0.jar #修改app名称#JAVA_HOME=/usr/local/jdk-11.0.2 #jdk位置 配了环境变量可以不设置,没有环境变量需要开启,指向jdk路径LOG_DIR=logs #日志目录OPEN_GCLOG=false #是否开启gc日志OPEN_OOM_DUMP=false #是否开启out of memoryOPEN_START_LOG=false #是否开启启动日志OPEN_ILLEGAL_REFLEX_WARNING=false #是否关闭反射警告#===========================================================================================# init val#===========================================================================================export JAVA_HOMEBASE_DIR=$(dirname $(readlink -f "$0"))APP_FULLNAME="${BASE_DIR}/${APP_NAME}"JAVA="${JAVA_HOME}/bin/java"JAVA_MAJOR_VERSION=$($JAVA -version 2>&1 | sed -E -n 's/.* version "([0-9]*).*$/1/p')JAVA_OPT=#===========================================================================================# check jdk#===========================================================================================error_exit (){  echo "ERROR: $1 !!"  exit 1}if [ -z "${JAVA_HOME}" ]; then  error_exit "Please set the JAVA_HOME variable in your environment, We need java(x64)! jdk8 or later is better!"fi#===========================================================================================# init flags#===========================================================================================init_flags(){    for x in "$@"    do        if [ $x = "-gc" ]; then            OPEN_GCLOG=true        fi        if [ $x = "-oom" ]; then            OPEN_OOM_DUMP=true        fi        if [ $x = "-sl" ]; then            OPEN_START_LOG=true        fi        if [ $x = "-iw" ]; then            OPEN_ILLEGAL_REFLEX_WARNING=true        fi    done}init_flags $@#===========================================================================================# common func#===========================================================================================build_java_opt(){    if $OPEN_GCLOG; then      if [[ "$JAVA_MAJOR_VERSION" -ge "9" ]]; then        JAVA_OPT="${JAVA_OPT} -Xlog:gc*:file=${BASE_DIR}/${LOG_DIR}/gc.log:time:filecount=10:filesize=100m"      else        JAVA_OPT="${JAVA_OPT} -Xloggc:${BASE_DIR}/${LOG_DIR}/gc.log -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintGCTimeStamps -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=10 -XX:GCLogFileSize=100M"      fi    fi    if $OPEN_ILLEGAL_REFLEX_WARNING; then      if [[ "$JAVA_MAJOR_VERSION" -ge "9" ]]; then        JAVA_OPT="${JAVA_OPT} --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.math=ALL-UNNAMED"      fi    fi    if $OPEN_OOM_DUMP; then      JAVA_OPT="${JAVA_OPT} -XX:-OmitStackTraceInFastThrow -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=${BASE_DIR}/${LOG_DIR}/heapdump.hprof"    fi    JAVA_OPT="${JAVA_OPT} -Dloader.path=.,resources,lib"    JAVA_OPT="${JAVA_OPT} -Djava.library.path=."}ensure_log_dir(){    if [ ! -e ${BASE_DIR}/${LOG_DIR} ]; then        mkdir ${BASE_DIR}/${LOG_DIR}    fi}build_java_optensure_log_dir#===========================================================================================# Application#===========================================================================================#使用说明,用来提示输入参数help() {  echo "help: sh 执行.sh [start|stop|restart|status]"  echo "-gc:open save gc logs"  echo "-oom:open out of memory"  echo "-sl:open save start log"  echo "-iw:open illegal reflex warning"  exit 1}#检查程序是否在运行is_exist(){  pid=`ps -ef|grep ${APP_FULLNAME}|grep -v grep|awk '{print $2}' `  #如果不存在返回1,存在返回0  if [ -z "${pid}" ]; then    return 1  else    return 0  fi}#启动方法start(){  build_java_opt  ensure_log_dir  is_exist  if [ $? -eq "0" ]; then    echo "${APP_NAME} is already running. pid=${pid} ."  else    if $OPEN_START_LOG; then       nohup "${JAVA}" -jar ${JAVA_OPT} "${BASE_DIR}/${APP_NAME}" > ${BASE_DIR}/${LOG_DIR}/startup.log 2>&1 &    else       nohup "${JAVA}" -jar ${JAVA_OPT} "${BASE_DIR}/${APP_NAME}" > /dev/null 2>&1 &    fi    is_exist    if [ $? -eq "0" ]; then      echo "${APP_NAME} is start success..."    else      echo "${APP_NAME} is start failed..."    fi  fi}#停止方法stop(){  is_exist  if [ $? -eq "0" ]; then    kill -9 $pid    echo "${APP_NAME} is stoped..."  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    ;;  *)    help    ;;esac

以上就是使用linux java shell启动得详细内容,更多关于linux java shell启动得资料请关注之家其它相关内容!