[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 명령어 임시 파일을 삭제 합니다 . 
댓글
댓글 쓰기