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