3. OS이야기/03. Shell Script

[UNIX/LINUX] 파일시스템 사용량 체크 스크립트

알 수 없는 사용자 2014. 6. 5. 18:40


check_filesystem_usage.sh

파일시스템 사용량 체크를 간편하게 하기 위한 스크립트에 대해 글 올립니다.

Linux 에서 파일시스템 사용량을 점검하는 것이 매우 중요하다는 것은 다 알고 계실 겁니다.

점검해야 할 서버 대수가 적고 별다른 할 일이 없을 만큼 한가하다면 일일이 육안으로 점검해도 되겠지만, 

점검해야 할 대상 서버와 파일시스템이 많다면 일일이 점검하다가 눈이 골뱅이가 될 것입니다.(@.@)

이럴 때 편하게 점검할 수 있는 스크립트입니다.

#!/bin/bash

threshold=${1}                         // 스크립트 실행 시의 input parameter를 threshold 변수에 저장

fs_use_lists=`df -Ph | grep -v Filesystem | awk '{print $6,$5}'`

                                                 // df 명령을 통해 파일시스템명과 사용률(Use%) 추출

idx=1

for tmp in ${fs_use_lists}; do

 // 파일시스템과 사용률 리스트를 받아 for문을 돌리는데, {파일시스템1}, {사용률1}, {파일시스템2}, {사용률2}, ... 와 같은 식으로 tmp 변수에 input 되므로,

remNum=`expr ${idx} % 2`   // remNum 이란 변수에 idx 변수값을 2로 나눈 나머지값을 넣어

if [ ${remNum} -ne 0 ]; then   // remNum 변수가 '0'이 아니면(즉, for문이 홀수번째로 돌면)

fs_name=${tmp}      // for문이 홀수번째 돌 때, tmp에 들어오는 값은 파일시스템명이고,

else         // 그렇지 않고 remNum 변수가 '0'이면(즉, for문이 짝수번째로 돌면)

usage=`echo ${tmp} | cut -d ' ' -f 2 | cut -d '%' -f 1`

                      // tmp에 들어오는 값은 사용률(Use%) 이므로 계산을 위해 공백과 % 기호를 제거한 후,

                         usage 변수에 저장

if [ ${usage} -gt ${threshold} ]; then      // threshold 값보다 usage 값이 크면,

echo 'The '${fs_name}' filesystem is using '${usage}'% and exceeded threshold!!'              // 파일시스템 사용률이 임계치를 초과했다는 코멘트를 print

fi

fi

idx=$((idx+1))     // fs_use_lists 값이 전부 처리될 때까지 idx 값을 1씩 증가시켜 for문 수행

done


상세 내역은 위의 주석 부분을 참조하시면 되고 원본 스크립트는 파일로 첨부하였습니다.

위와 같이 파일시스템 사용량을 체크했다면, 해당 파일시스템에서 대체 어떤 파일들이 공간을 많이 차지하고 있는지 궁금해지겠죠?

특정 파일시스템에서 일정 크기 이상 가진 파일들을 list-up 하는 스크립트는 다음 글에서 설명 드리겠습니다.

감사합니다.