[Linux] 디스크 용량 로깅

2023. 5. 2. 15:41IT 공부/개발환경

시스템을 구축하다보니 특정 디렉토리의 용량이 과다하게 증가하는 시점을 확인해야 할 필요가 있다. 

데이터가 주로 저장되는 디렉토리 또는 각종 프로그램이 설치되는 디렉토리가 그 대상이다. 

 

지난 프로젝트에서는 요청이 생겼을 때 급하게 하느라 매일 터미널에서 명령어를 입력하고 엑셀로 기록했다. 

하면서도 정말 비효율적이라 생각했고, 프로젝트가 끝난 지금 스크립트를 작성해보았다.

 

스크립트 작성은 https://www.tutorialspoint.com/execute_bash_online.php에서 진행했다. 

 

Online BASH Compiler - bash

Online BASH Compiler (GNU Bash v5.1.16) Online BASH Compiler (GNU Bash v5.1.16) helps you to Edit, Run and Share your Bash Code directly from your browser. This development environment provides you version GNU Bash v5.1.16. How to give program Input? The l

www.tutorialspoint.com

 

 

df -h

 

 

목표 : 원하는 디렉토리의 용량을 날짜와 함께 로깅한다. 

 

 

disk_usage.sh

#!/bin/bash

TODAY=$(date "+%Y-%m-%d %H:%M:%S")
# echo ${TODAY}

# awk 'NR>=4' : 4번째 행부터의 결과만 출력
# awk '{print $5}' : 5번째 열의 결과만 출력
USAGE=`df -h | awk ' NR>=4 {print $5}' | awk ' NR<2'`
# echo ${USAGE}
DISK=`df -h | awk ' NR>=4 {print $6}' | awk ' NR<2'`
# echo ${DISK}

# 파일에 저장할 문자열
RESULT="$TODAY $DISK $USAGE"

# Line이 과도하게 길어지는 것을 방지하고 관리 편의성을 위해 연도별로 파일을 분리
YEAR=$(date "+%Y")
FILE="/data/disk_usage_$YEAR.log"

# 당해 로깅파일이 있으면 텍스트 추가
# 당해 로깅파일이 없으면 빈 파일 생성 후 텍스트 추가
if [ -e $FILE ]; then
  echo ${RESULT} | tee -a ${FILE}
  # echo "Logging today's status"
else
  touch disk_usage_${YEAR}.log
  echo ${RESULT} | tee -a ${FILE}
  # echo "Logging today's status after making file"
fi

 

실행결과는 다음과 같다.

 

간단한 수준이지만 프로젝트 초반에 한 번 작성해서 크론탭에 등록해두면 편리할 것 같다. 

다음 프로젝트 때 한 번 더 테스트해보고 적용해봐야겠다. 

 

 

 

참고한 블로그

https://ponyozzang.tistory.com/645

https://ppp0183.tistory.com/26

https://chanchan-father.tistory.com/969

https://www.delftstack.com/ko/howto/linux/how-to-append-text-to-a-file-using-bash/

반응형