heap 사용량 모니터링
#!/bin/bash
source /home/shell/env.sh
#JAVA_WHERE="/usr/bin"
#JavaNames_gc=("대상 프로세스 이름")
max_heap_usage=0
for JavaName in "${JavaNames_gc[@]}"
do
# 검색되는 프로세스들의 PID를 추출
pid=$(ps aux | grep $JavaName | grep -v grep | awk '{print $2}')
- ps aux 명령어를 사용하여 JavaName과 일치하는 프로세스를 찾고, 해당 프로세스의 PID를 추출
# PID가 없을 경우 1 출력 후 종료
if [ -z "$pid" ]; then
echo 101
exit 0
fi
- PID가 비어 있는지 확인하고, 비어 있으면 101을 출력한 후 스크립트를 종료
# 각 PID의 CPU 사용량 중 최대값을 추출
result=$("$JAVA_WHERE"/jstat -gc "$pid" | tail -n 1 | awk '{print ($3+$4+$6+$8)/($7+$5+$1)*100}')
- jstat -gc 명령어를 사용하여 가비지 컬렉션(GC) 정보를 가져오고, 특정 필드의 값을 계산하여 result 변수에 저장
HEAP_MEMORY_USAGE=$(printf "%.of" "$result")
- result 값을 정수로 포맷팅하여 HEAP_MEMORY_USAGE 변수에 저장
# echo $pid $HEAP_MEMORY_USAGE $result
if [ $HEAP_MEMORY_USAGE -gt $max_heap_usage ]
then
max_heap_usage=$HEAP_MEMORY_USAGE
fi
- 현재 힙 사용량이 최대 힙 사용량보다 큰 경우, max_heap_usage 변수를 갱신
done
echo $max_heap_usage
#!/bin/bash
source /home/shell/env.sh
#JAVA_WHERE="/usr/bin"
#JavaNames_gc=("대상 프로세스 이름")
max_heap_usage=0
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 101
exit 0
fi
# 각 PID의 CPU 사용량 중 최대값을 추출
result=$("$JAVA_WHERE"/jstat -gc "$pid" | tail -n 1 | awk '{print ($3+$4+$6+$8)/($7+$5+$1)*100}')
HEAP_MEMORY_USAGE=$(printf "%.of" "$result")
# echo $pid $HEAP_MEMORY_USAGE $result
if [ $HEAP_MEMORY_USAGE -gt $max_heap_usage ]
then
max_heap_usage=$HEAP_MEMORY_USAGE
fi
done
echo $max_heap_usage
'리눅스' 카테고리의 다른 글
모니터링 쉘 스크립트 만들기(10) (0) | 2024.05.29 |
---|---|
모니터링 쉘 스크립트 만들기(9) (0) | 2024.05.29 |
모니터링 쉘 스크립트 만들기(7) (0) | 2024.05.28 |
모니터링 쉘 스크립트 만들기(6) (0) | 2024.05.27 |
모니터링 쉘 스크립트 만들기(5) (0) | 2024.05.24 |