[Shell Script] 디스크 용량 감시하기

디스크 용량 감시하기  


디스크 사용률을 정기적으로 감시해서 허용값이상으로 넘어가면 경고 할때 사용합니다 . 

#!/bin/sh

used_limit=90 #1
tmpfile="df.tmp.$$" #2

df -P | awk 'NR >= 2 {print $5,$6}' > "$tmpfile"#3

while read percent mountpoint #4
do
    percent_val=${percent%\%} #5

    if [ "$percent_val" -ge "$used_limit" ]; then #6
        date_str=$(date '+%Y/%m/%d/%H:%M%S')     #7
        echo "[$date_str] Disk Capacity Alert: $mountpoint($percent_used)"
        /home/user1/bin/alert.sh
    fi
done < "$tmpfile"

rm -rf "$tmpfile"                                    #8


서버가 마운트한 각각의 디스크의 사용률을 감시해서 지정 값보다 사용률이 큰 경우 경고 하는 스크립트입니다 . 
df 명령어로 디스크의 빈용량을 조사하고 셸 변수 used_limit으로 지정한 허용값 퍼센트보다 사용률이 크면 alert.sh 라는 스크립트를 실행하여 경고를 발생시킵니다 . 

#1 : 우선 스크립트가 감시하는 디스크 사용률 허용값을 셸 변수 used_limit에 정의합니다 . 
여기서 설정한 퍼센트 값이 디스크 사용률이 높으면 경고를 발생시킵니다 . 


#2 : df 명령어 출력을 저장하는 임시파일의 파일명을 정의합니다 .

 
#3 : df 명령어 출력을 awk 명령어로 처리하여 사용률을 추출합니다 . 

 

옵션

의미

-h

읽기 쉬운 형식으로 크기 표기 

-k

1024byte 단위로 표시

-i

inode 정보 표시

-p

posix 출력 형식 사용

-l

로컬 파일시스템 대상

여기서는 -p 형식을 사용합니다 . 

#3에서는 df 명령어 첫줄은 헤더라 불필요하므로  awk 명령어로 필터를 NR>=2 로 지정하여 두번째 줄 이후를 표시합니다 . 

그리고 디스크 사용률과 마운트 포인트를 취득하므로 5번째와 6번째를  awk 명령어로 print 합니다 . 

결과는 $tmpfile로 리다이렉트 하며 tmpfile 내용은 다음과 같습니다 . 
















#4 : 임시파일 $tmpfile 내용을 while 문에 리다이렉트 하여 읽습니다 . 
read명령어로 셸 변수  percent와 mountpoint 에 각각 이용률과 마운트 포인트를 대입합니다 . 

#5 : 이용률 문자열에서 % 기호를 삭제합니다 . 

#6 : test명령어의 이상을 의미하는 -ge 연산자로 사용률이 허용값 이상이면 경고를 표시하고 알람을 발생하는 alert.sh 를 실행합니다 . 
현재 예제에서는 alert.sh 를 빈파일 상태로 둔상태입니다 . 이곳에 장애가 발생할 경우 메일을 전송하는 스크립트 등 을 설정 할 수도 있습니다 . 


#7 : date 명령어를 이용하여 현재 시각을 표시 합니다 . 

#8 : df 명령어 임시 파일을 삭제 합니다 . 

댓글