이번 작업은 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

+ Recent posts