1. 개요
GC Log를 분석하기 위한 스크립트를 작성하고 있으며 활용시에는 반드시 스크립트 점검하고 사용할 것
2. 코드
#!/bin/bash
LOG_DIR=/sw/apache-tomcat-8.5.53/logs
OUT_LOG=MyGCLog.log
GC_HEADER=gc.log.202
set_pid() {
PID=`ps -ef | grep java | grep tomcat | awk {'print $2'}`
}
set_gclog() {
NOW_GCLOG=`ls -ltr $LOG_DIR/$GC_HEADER* | tail -1 | awk {'print $9'}`
}
del_old_tail() {
java_elapsed=`ps -eo pid,etime,time,args | grep $1 | grep -v grep | awk {'print $2'}`
ps -eo pid,etime,time,args | grep "tail -f $LOG_DIR/$GC_HEADER" | grep -v "$NOW_GCLOG" | grep -v grep | while read line; do
if [ "$java_elapsed" \< "`echo $line | awk {'print $2'}`" ]; then
kill -9 `echo $line | awk {'print $1'}`
fi
done
}
exe_tail() {
tail -f $NOW_GCLOG >> $LOG_DIR/$OUT_LOG &
}
set_pid
set_gclog
del_old_tail $PID
exe_tail
#echo $NOW_GCLOG
while true; do
set_pid
if [ "$PID" != "" ]; then
#echo $OLD_PID
#echo $PID
if [ -z "$OLD_PID" ]; then
OLD_PID=$PID
fi
if [ "$OLD_PID" != "$PID" ]; then
kill -9 `ps -ef | grep "tail -f $NOW_GCLOG" | awk {'print $2'}`
set_gclog
exe_tail
OLD_PID=$PID
fi
##else
#echo "xxxx"
fi
sleep 30
done