2019년 7월 4일 목요일

Tomcat start.sh 스크립트

 Tomcat instance 구성한 후 번들로 제공되는 Tomcat home에 있는 startup.sh 맘에 들지 않을 뿐더러 기능이 적다.

기존에 갖고 있던 스크립트에서 update 했다


#!/bin/bash

export CATALINA_BASE=$(dirname $(dirname $(realpath $0)))  # 절대경로를 설정(상대 경로의 경우 스크립트 실행 시 cd 를 넣어 주어야 함)

. $CATALINA_BASE/bin/env.sh >> /dev/null # 환경변수 적용

DATE=`date +%Y%m%d%H%M%S`

# Process Check ---------------------------------------
PID=`ps -ef | grep java | grep "=$SERVER_NAME" | awk '{print $2}'`

if [ e$PID != "e" ]; then
  echo "# [ERROR] Tomcat ($SERVER_NAME) is already RUNNING..."
  exit;
fi
# WAS User Check----------------------------------------
UNAME=`id -u -n`
if [ e$UNAME != "e$TOMCAT_USER" ]; then
  echo "# [ERROR] $TOMCAT_USER USER to start this SERVER! - $SERVER_NAME..."
  exit;
fi

# Make LOG Directory------------------------------------
# 로그홈 설정이 없으면 또는 권한이 없는 경우 바로 exit!!
if [ -z $LOGHOME ]; then
  echo "# [ERROR] $LOGHOME/$SERVER_NAME No Such Directory or Permission denied!!! Please check $CATALINA_BASE/bin/env.sh file "
  echo ""
  exit ;
else
  [ ! -d "${LOG_DIR}" ]      &&  mkdir -p "${LOG_DIR}";     
  [ ! -d "${ACCESS_DIR}" ]   &&  mkdir -p "${ACCESS_DIR}"; 
  [ ! -d "${GC_LOG_DIR}" ]   &&  mkdir -p "${GC_LOG_DIR}";
  [ ! -d "${HEAP_LOG_DIR}" ] &&  mkdir -p "${HEAP_LOG_DIR}";
fi

# -------------------------------------------------------
# rotate 기능이 필요 없을 때 
# -------------------------------------------------------
rm -rf $CATALINA_BASE/work/*;
mv ${LOG_DIR}/$SERVER_NAME.log ${LOG_DIR}/$SERVER_NAME.$DATE;

nohup $CATALINA_HOME/bin/catalina.sh run >> ${LOG_DIR}/$SERVER_NAME.log 2>&1 &
# -------------------------------------------------------

# rotate 기능이 필요한 경우 (하지만 logrotate 기능이 더 안전함) 경험상 rotatelogs는 비정적으로 프로세스가 죽는다. 아무런 흔적없이.......
# -------------------------------------------------------
mv $LOG_DIR/$SERVER_NAME.log.`date '+%Y-%m-%d'` $LOG_DIR/$SERVER_NAME.log.$DATE;

nohup $CATALINA_HOME/bin/catalina.sh run 2>&1 |/usr/sbin/rotatelogs -l $LOG_DIR/$SERVER_NAME.log.%Y-%m-%d 86400 &


# ------------------------------------------------------
# Do not want to log stdout, stderr (ex ./start.sh nolog)
# tail을 통해서 로그가 올라오는 것을 보고 싶을 수도 있지만 그렇지 않은 경우엔 인자값을 nolog 또는 notail을 입력하면 tail 없이 기동
# ------------------------------------------------------
if [ "$1" == "nolog" ] || [ "$1" == "notail" ] ; then
  echo "Starting... $SERVER_NAME"
  exit;
fi

# -----------------------------------------------------
$CATALINA_BASE/bin/tail.sh

댓글 없음:

댓글 쓰기