1. 개요
서버나 PC에 설치되어 실행 중인 톰캣(Tomcat)의 버전을 확인하는 방법이다. 톰캣은 설치 경로, 실행 방식, 배포 형태에 따라 확인할 수 있는 위치가 조금씩 다르므로, 프로세스·로그·기본 애플리케이션을 순서대로 확인하면 된다.
2. 방법
2-1. 프로세스 확인
ps 명령어를 이용해 Tomcat의 Java 프로세스를 확인한다. 실행 옵션에 -Dcatalina.home=... 또는 -Dcatalina.base=...가 포함되어 있으면 톰캣 설치 경로를 찾을 수 있고, 해당 경로의 lib/catalina.jar를 이용해 버전 정보를 확인할 수 있다. 프로세스 문자열 안에 7.0.55처럼 버전과 관련된 문자열이 직접 보이는 경우도 있다.
IFS=$'\n'; psarray=( $(ps -eo pid,user,args | grep java | grep -v grep) );
IFS=' '
for psa in "${psarray[@]}"
do
pid=$(echo "$psa" | awk '{print $1}')
user=$(echo "$psa" | awk '{print $2}')
thome=""
ver=""
for c in $(echo "$psa")
do
if [[ $c == "-Dcatalina.home="* ]]; then
thome=$(echo "$c" | cut -d"=" -f2)
ver=$(java -cp "${thome}/lib/catalina.jar" org.apache.catalina.util.ServerInfo | grep 'Server number' | cut -d":" -f2)
break
fi
done
printf "%-10s %-10s %-50s %-20s\n" "$pid" "$user" "$thome" "$ver"
done
위 스크립트는 실행 중인 Java 프로세스에서 -Dcatalina.home 값을 찾은 뒤, org.apache.catalina.util.ServerInfo를 실행해 Server number 값을 출력한다. 결과에서 경로가 비어 있다면 해당 Java 프로세스가 톰캣이 아니거나, 톰캣이 다른 방식으로 실행되어 -Dcatalina.home 옵션이 보이지 않는 경우일 수 있다.
설치 경로를 이미 알고 있다면 다음처럼 직접 확인할 수도 있다.
java -cp /path/to/tomcat/lib/catalina.jar org.apache.catalina.util.ServerInfo
또는 톰캣의 bin 디렉터리에 있는 버전 확인 스크립트를 사용할 수 있다.
/path/to/tomcat/bin/version.sh
2-2. 로그 확인
기동 로그인 catalina.out 또는 날짜별로 분리된 catalina.*.log를 확인해도 버전 정보를 찾을 수 있다. 톰캣이 시작될 때 서버 정보, JVM 정보, OS 정보 등이 함께 출력되는 경우가 많다.
grep -i "Server version" /path/to/tomcat/logs/catalina.out grep -i "Server number" /path/to/tomcat/logs/catalina.out
로그 파일 위치는 설치 방식에 따라 다를 수 있다. 일반적으로는 $CATALINA_BASE/logs 또는 $CATALINA_HOME/logs 아래에 있다.
2-3. 샘플 애플리케이션 확인
기본으로 포함된 webapps/ROOT/index.jsp를 실행하면 버전 정보가 출력되는 경우가 있다. 브라우저에서 톰캣 기본 페이지에 접속해 확인하는 방식이다.
다만 운영 서버에서는 보안상의 이유로 기본 ROOT 애플리케이션을 삭제하거나 다른 애플리케이션으로 교체하는 경우가 많다. 따라서 이 방법은 개발 환경이나 기본 구성이 유지된 서버에서만 사용할 수 있으며, 외부에 노출된 운영 환경에서는 기본 페이지를 그대로 두지 않는 편이 좋다.