Tomcat 멀티 인스턴스 실행 스크립트

INSTANCES=$(find $BASE_DIR -maxdepth 1 -mindepth 1 -type d -exec basename {} \;)


마스터의 명령어는 $BASE_DIR에서 최상위 수준의 디렉토리들만을 찾아내고, 각 디렉토리의 기본 이름(즉, 전체 경로 없이 디렉토리 이름만)을 반환하는 방식으로 작동합니다. 이 명령어는 Bash 스크립트 내에서 인스턴스 디렉토리 목록을 동적으로 생성할 때 유용합니다.

여기서:

  • find $BASE_DIR$BASE_DIR 디렉토리 내에서 검색을 시작합니다.
  • -maxdepth 1은 검색을 최상위 디렉토리에서만 수행하고 하위 디렉토리로는 내려가지 않게 합니다.
  • -mindepth 1은 최상위 디렉토리 자체는 결과에서 제외하고 그 바로 아래 있는 디렉토리부터 결과에 포함시킵니다.
  • -type d는 검색 대상이 디렉토리임을 지정합니다.
  • -exec basename {} \;는 검색된 각 디렉토리에 대해 basename 명령을 실행하여 전체 경로 대신 디렉토리의 기본 이름만을 추출합니다. 여기서 {}find 명령에 의해 찾아진 각 항목을 대체하고, \;-exec 옵션의 끝을 나타냅니다.

이 명령어를 사용하면 $BASE_DIR 내에 위치한 각 인스턴스 디렉토리의 이름이 공백으로 구분되어 INSTANCES 변수에 저장됩니다. 이후에 이 변수를 반복문에서 사용하여 각 인스턴스에 대한 작업을 수행할 수 있습니다.

예를 들어, 인스턴스 디렉토리들이 /home/apache/tomcat/instance에 위치하고 adv, bdm, cms 등과 같은 이름을 가지고 있다면, 이 명령어는 adv bdm cms 등의 문자열을 INSTANCES 변수에 저장합니다. 이후 스크립트 내의 반복문에서 이 변수를 이용하여 각 인스턴스에 대한 작업을 순차적으로 수행할 수 있습니다.

#!/bin/bash

# Tomcat의 설치 경로 설정
CATALINA_HOME=/home/apache/tomcat

# 인스턴스들이 위치한 경로 설정
BASE_DIR=/home/apache/tomcat/instance

# 인스턴스 목록을 자동으로 찾아내기
INSTANCES=$(find $BASE_DIR -maxdepth 1 -mindepth 1 -type d -exec basename {} \;)

for instance in $INSTANCES
do
    echo "Starting $instance..."
    export CATALINA_HOME=$CATALINA_HOME
    export CATALINA_BASE="$BASE_DIR/$instance"
    $CATALINA_HOME/bin/catalina.sh start
done

echo "All instances have been started."
#!/bin/bash

# Tomcat의 설치 경로 설정
CATALINA_HOME=/home/apache/tomcat

# 인스턴스들이 위치한 경로 설정
BASE_DIR=/home/apache/tomcat/instance

# 인스턴스 목록을 자동으로 찾아내기
INSTANCES=$(find $BASE_DIR -maxdepth 1 -mindepth 1 -type d -exec basename {} \;)

for instance in $INSTANCES
do
    echo "Restarting $instance..."
    export CATALINA_HOME=$CATALINA_HOME
    export CATALINA_BASE="$BASE_DIR/$instance"

    # 인스턴스 종료
    $CATALINA_HOME/bin/catalina.sh stop

    # 잠시 대기 (인스턴스가 완전히 종료되도록)
    sleep 10

    # 인스턴스 시작
    $CATALINA_HOME/bin/catalina.sh start
done

echo "All instances have been restarted."
#!/bin/bash

# Tomcat의 설치 경로 설정
CATALINA_HOME=/home/apache/tomcat

# 인스턴스들이 위치한 경로 설정
BASE_DIR=/home/apache/tomcat/instance

# 인스턴스 목록을 자동으로 찾아내기
INSTANCES=$(find $BASE_DIR -maxdepth 1 -mindepth 1 -type d -exec basename {} \;)

for instance in $INSTANCES
do
    echo "Stopping $instance..."
    export CATALINA_HOME=$CATALINA_HOME
    export CATALINA_BASE="$BASE_DIR/$instance"

    # 인스턴스 종료
    $CATALINA_HOME/bin/catalina.sh stop
done

echo "All instances have been stopped."
chmod +x script_name.sh
./script_name.sh

관련 글