내용은 다시 추가할께요.
#! /bin/sh
## SIMPLE, EXTRACT HEAP MEMORY USE RATIO FROM GC LOGS. by jeikina.
### ENV. ###
FILENAME=$1
WORKDIR=$PWD/gcwork_tmp
DATE_POSTFIX=`echo $FILENAME | cut -d"." -f3 | cut -c1-8`
YGEN_FILE="younggen_${DATE_POSTFIX}.txt"
OGEN_FILE="paroldgen_${DATE_POSTFIX}.txt"
HEAPTOT_FILE="heap_total_${DATE_POSTFIX}.txt"
############
### make working dir. ###
if [ -d $WORKDIR ]
then
echo " @ Work Directory is $WORKDIR ! Check the output files... "
else
echo " !! There is no gcwork_tmp directory !! making... "
mkdir -p $WORKDIR/mov_tmp
ls -altrd $WORKDIR
fi
######################
## Young Gen Space Use Ratio ##
_GET_YGS()
{
if [ -f $WORKDIR/$YGEN_FILE ]
then
echo " @ ($YGEN_FILE) filename is already exist! Old file will be Move to (mov_tmp) Directory..."
mv $WORKDIR/$YGEN_FILE $WORKDIR/mov_tmp
grep -v "Full GC" $FILENAME | grep ^[0-9] | awk '{print $4}' | cut -d"(" -f2 | sed 's/K)]//g'> $WORKDIR/$YGEN_FILE
else
grep -v "Full GC" $FILENAME | grep ^[0-9] | awk '{print $4}' | cut -d"(" -f2 | sed 's/K)]//g'> $WORKDIR/$YGEN_FILE
fi
}
## Old Gen Space Use Ratio ##
_GET_OGS()
{
if [ -f $WORKDIR/$OGEN_FILE ]
then
echo " @ ($OGEN_FILE) filename is already exist! Old file will be Move to (mov_tmp) Directory..."
mv $WORKDIR/$OGEN_FILE $WORKDIR/mov_tmp
grep ParOldGen $FILENAME | grep ^[0-9] | awk '{print $7}' | cut -d"(" -f2 | sed 's/K)]//g' > $WORKDIR/$OGEN_FILE
else
grep ParOldGen $FILENAME | grep ^[0-9] | awk '{print $7}' | cut -d"(" -f2 | sed 's/K)]//g' > $WORKDIR/$OGEN_FILE
fi
}
## Total Heap Space Use Ratio ##
_GET_HEAPTOT()
{
if [ -f $WORKDIR/$HEAPTOT_FILE ]
then
echo " @ ($HEAPTOT_FILE) filename is already exist! Old file will be Move to (mov_tmp) Directory..."
mv $WORKDIR/$HEAPTOT_FILE $WORKDIR/mov_tmp
grep -v "Full GC" $FILENAME | grep ^[0-9] | awk '{print $5}'| cut -d"(" -f2 | sed 's/K),//g' > $WORKDIR/$HEAPTOT_FILE
grep -i "full gc" $FILENAME | awk '{print $8}' | cut -d"(" -f2 | sed 's/K)*//g' >> $WORKDIR/$HEAPTOT_FILE
else
grep -v "Full GC" $FILENAME | grep ^[0-9] | awk '{print $5}'| cut -d"(" -f2 | sed 's/K),//g' > $WORKDIR/$HEAPTOT_FILE
grep -i "full gc" $FILENAME | awk '{print $8}' | cut -d"(" -f2 | sed 's/K)*//g' >> $WORKDIR/$HEAPTOT_FILE
fi
}
_OUTPUT_SORT()
{
YGEN_MIN_USE=`sort -n $WORKDIR/$YGEN_FILE | head -1`
YGEN_MAX_USE=`sort -n $WORKDIR/$YGEN_FILE | tail -1`
OGEN_MIN_USE=`sort -n $WORKDIR/$OGEN_FILE | head -1`
OGEN_MAX_USE=`sort -n $WORKDIR/$OGEN_FILE | tail -1`
HEAPTOT_MIN_USE=`sort -n $WORKDIR/$HEAPTOT_FILE | head -1`
HEAPTOT_MAX_USE=`sort -n $WORKDIR/$HEAPTOT_FILE | tail -1`
echo
echo "----------------------------------------------------------------------"
echo " @ Young Generation Use Ratio (min/max) : $YGEN_MIN_USE / $YGEN_MAX_USE KB"
echo " @ Old Generation Use Ratio (min/max) : $OGEN_MIN_USE / $OGEN_MAX_USE KB"
echo " @ Total Heap Use Ratio (min/max) : $HEAPTOT_MIN_USE / $HEAPTOT_MAX_USE KB"
echo "----------------------------------------------------------------------"
}
_GET_FULLGC_TIME()
{
FGC_TIME_MIN=`grep -i "full gc" $FILENAME | awk '{print $(11)}' | sort -n | head -1`
FGC_TIME_MAX=`grep -i "full gc" $FILENAME | awk '{print $(11)}' | sort -n | tail -1`
echo " @ Full GC Duration Time : ${FGC_TIME_MIN} ~ ${FGC_TIME_MAX} secs"
echo
}
## RUN ##################################################################
_GET_YGS
_GET_OGS
_GET_HEAPTOT
_OUTPUT_SORT
_GET_FULLGC_TIME
#########################################################################
