jdk配置

  1. 解压
    tar -zxvf /usr/local/jdk-11.0.2.tar.gz -C /usr/local
  2. 配置环境变量
    vi /etc/profile

    # java Path
    export JAVA_HOME=/usr/local/jdk-11.0.2
    export CLASSPATH=$JAVA_HOME/lib:$CLASSPATH
    export PATH=$JAVA_HOME/bin:$PATH
  3. 重启环境
    source /etc/profile
  4. 检查
    java --version

sh java项目启动脚本

#!/bin/bash

#===========================================================================================
# configuration
#===========================================================================================
APP_NAME=app.jar
JAVA_HOME=/usr/local/jdk-11.0.2
OPEN_GCLOG=false #是否开启gc日志

#===========================================================================================
# 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

BASE_DIR=`cd $(dirname $0); pwd`
#===========================================================================================
# JVM Configuration
#===========================================================================================
export JAVA_HOME

JAVA="${JAVA_HOME}/bin/java"
JAVA_MAJOR_VERSION=$($JAVA -version 2>&1 | sed -E -n 's/.* version "([0-9]*).*$/\1/p')

if $OPEN_GCLOG; then
  if [[ "$JAVA_MAJOR_VERSION" -ge "9" ]]; then
    JAVA_OPT="${JAVA_OPT} -Xlog:gc*:file=${BASE_DIR}/logs/gc.log:time:filecount=10:filesize=100m"
  else
    JAVA_OPT="${JAVA_OPT} -Xloggc:${BASE_DIR}/logs/gc.log -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintGCTimeStamps -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=10 -XX:GCLogFileSize=100M"
  fi
fi

JAVA_OPT="${JAVA_OPT} -Dloader.path=.,resources,lib"
JAVA_OPT="${JAVA_OPT} -Djava.library.path=."

#===========================================================================================
# Application
#===========================================================================================
APP_FULLNAME="${BASE_DIR}/${APP_NAME}"

#使用说明,用来提示输入参数
usage() {
  echo "Usage: sh 执行脚本.sh [start|stop|restart|status]"
  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(){
  is_exist
  if [ $? -eq "0" ]; then
    echo "${APP_NAME} is already running. pid=${pid} ."
  else
    nohup "${JAVA}" -jar ${JAVA_OPT} "${BASE_DIR}/${APP_NAME}" > /dev/null 2>&1 &
    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
    ;;
  *)
    usage
    ;;
esac

点墨
26 声望3 粉丝

全栈前端开发工程师