Heapdump를 생성하는 스크립트


#!/bin/bash

source /home/shell/env.sh

#JAVA_WHERE="/usr/bin"
#JavaNames_gc=("대상 프로세스 이름")

for JavaName in "${JavaNames_gc[@]}"
do

# 검색되는 프로세스 들의 pid를 추출
pid=$(ps aux | grep $JavaName | grep -v grep | awk '{print $2}')

# pid가 없을 경우 1 출력 후 종료
if [ -z "$pid" ]; then
    echo 1
    exit 0
fi

FILENAME="$MY_HOME/dump/heapdump.$pid.$JavaName.$(date +%Y%m%d_%H%M%S).hprof"

  • 힙 덤프 파일 이름을 정의
  • 해당 파일은 MY_HOME 디렉토리 아래 dump 폴더에 저장되며, 파일 이름에는 프로세스의 PID와 이름, 그리고 생성 시간이 포함됩니다.


echo "$pid heap dump가 생성중...."
"$JAVA_WHERE"/jmap -dump:format=b,file=$FILENAME $pid
echo "$FILENAME heap dump가 생성 완료!!"

  • jmap을 사용하여 힙 덤프를 생성


done


더보기

#!/bin/bash

source /home/shell/env.sh

#JAVA_WHERE="/usr/bin"
#JavaNames_gc=("대상 프로세스 이름")

for JavaName in "${JavaNames_gc[@]}"
do

# 검색되는 프로세스 들의 pid를 추출
pid=$(ps aux | grep $JavaName | grep -v grep | awk '{print $2}')

# pid가 없을 경우 1 출력 후 종료
if [ -z "$pid" ]; then
    echo 1
    exit 0
fi

FILENAME="$MY_HOME/dump/heapdump.$pid.$JavaName.$(date +%Y%m%d_%H%M%S).hprof"

echo "$pid heap dump가 생성중...."
"$JAVA_WHERE"/jmap -dump:format=b,file=$FILENAME $pid
echo "$FILENAME heap dump가 생성 완료!!"

done

+ Recent posts