이번 작업은 CPU사용량에 대한 모니터링 스크립트를 만들어 보겠습니다.
# cpu.sh
#!/bin/bash
source /home/shell/env.sh
- /home/shell/env.sh 스크립트를 현재 스크립트에 포함
- 따라서 env.sh 파일에 정의된 변수를 현재 스크립트에서 사용 가능
# 쓰레드를 모니터링하고자 하는 프로세스 패턴 문구
# env.sh에서 받아옴
# CpuProcessNames=("tomcat" "httpd" "java")
max_cpu_usage=0
for ProcessName in "${CpuProcessNames[@]}"
do
- 최대 CPU 사용량을 저장할 변수를 초기화
- CpuProcessNames 배열에 있는 각 프로세스에 대해 반복
# 검색되는 프로세스들의 PID를 추출
pids=$(ps aux | grep $ProcessName | grep -v grep | awk '{print $2}')
- 각 프로세스의 PID를 찾음.
- ps aux 명령으로 프로세스 목록을 가져와서 해당 패턴을 가진 프로세스를 찾고, awk를 사용하여 PID를 추출
# PID가 없을 경우 101 출력 후 종료
if [ -z "$pids" ]; then
echo 101
exit 0
fi
- 만약 PID가 없으면(즉, 해당 프로세스가 실행 중이 아니면) 101을 출력하고 스크립트를 종료
# 각 PID의 CPU 사용량 중 최대값을 추출
for pid in $pids
do
cpu_usage=$(ps -p $pid -o %cpu | tail -n +2)
- 각 PID에 대한 CPU 사용량을 찾음
- ps 명령어로 CPU 사용량을 가져오고, awk를 사용하여 필요한 정보를 추출
cpu_usage=$(echo $cpu_usage | awk -F. '{print $1}')
- CPU 사용량을 정수 형태로 변환
if [ "$cpu_usage -gt $max_cpu_usage" ]
- 현재 CPU 사용량이 최대 CPU 사용량보다 큰지 확인
then
max_cpu_usgae=$cpu_usage
fi
done
done
# 최대 CPU 사용량을 출력
echo "$max_cpu_usage"
#!/bin/bash
source /home/shell/env.sh
# 쓰레드를 모니터링하고자 하는 프로세스 패턴 문구
# env.sh에서 받아옴
# CpuProcessNames=("tomcat" "httpd" "java")
max_cpu_usage=0
for ProcessName in "${CpuProcessNames[@]}"
do
# 검색되는 프로세스들의 PID를 추출
pids=$(ps aux | grep $ProcessName | grep -v grep | awk '{print $2}')
# PID가 없을 경우 101 출력 후 종료
if [ -z "$pids" ]; then
echo 101
exit 0
fi
# 각 PID의 CPU 사용량 중 최대값을 추출
for pid in $pids
do
cpu_usage=$(ps -p $pid -o %cpu | tail -n +2)
cpu_usage=$(echo $cpu_usage | awk -F. '{print $1}')
if [ "$cpu_usage -gt $max_cpu_usage" ]
then
max_cpu_usgae=$cpu_usage
fi
done
done
# 최대 CPU 사용량을 출력
echo "$max_cpu_usage"
'리눅스' 카테고리의 다른 글
모니터링 쉘 스크립트 만들기(4) (0) | 2024.05.23 |
---|---|
모니터링 쉘 스크립트 만들기(3) (0) | 2024.05.22 |
모니터링 쉘 스크립트 만들기(1) (1) | 2024.05.20 |
nginx 업그레이드 (0) | 2024.05.14 |
GC 로그 및 heap 덤프 설정 (0) | 2024.05.13 |