리오집사의 기억저장소

목차

     

[리눅스] 쉘스크립트와 crontab을 이용한 LOG 자동 정리 방법

운영되고 있던 대규모 시스템의 운영을 맡게 되면서, 그것도 혼자. 이런저런 문제에 부딪히곤 한다. 그 중에 부딪혔던 상황 중 하나는, 아래와 같이 서버 용량이 꽉 차 서비스가 불가능해져버린 상황이다. (용량 확인 명령어 : df -h) 

 

용량이 꽉 찼던 원인을 찾아 보았더니 아래 그림처럼, 매일 생성되는 로그의 양이 엄청났기 때문이다.

 

저 정도 크기의 로그는 확인도 힘들 뿐더러, 3~4일 지난 로그는 필요가 없기 때문에 자동으로 압축 및 삭제 되도록 해도 아무 문제가 없다.  방법은 간단하다.

  1. 간단한 쉘 스크립트 작성 후,
  2. crontab 을 이용해 작성한 쉘 스크립트가 특정 시간에 실행되도록 자동 일정을 등록해준다. 

 

1. 로그 압축 및 삭제 스크립트 작성

적당한 위치에서 vi creanLog.sh 를 입력하여, 쉘 스크립트를 작성한다. 

  • LOGDIR 변수에는, 로그가 위치한 경로를 가리키도록 한다.
  • GZIP_DAY는 압축 주기다. 즉, 2일이 지난 로그는 압축시키기 위해 변수로 지정했다.
  • DEL_DAY는 삭제 주기다. 4일이 지난 로그을 삭제하기 위해 지정했다. 2일이 지난 로그는 압축되므로, 압축된 파일들이 삭제될 것이다.
  • cd $LOGDIR 로 해당 경로로 이동하고,
  • 모든 로그 파일( *.log ) 에 대해서 GZIP_DAY(2일) 이 지나면 압축시킨다.
  • 모든 로그 압축 파일(*.gz)에 대해서 DEL_DAY(4일)이 지나면 삭제시킨다.

 

 

2. crontab을 이용해 쉘스크립트 자동실행

crontab을 이용해 작성한 쉘 스크립트를 특정 시간에 자동 실행되도록 한다.

A. 명령창에 crontab -e 를 입력 

B. 아래와 같이 편집창 가장 하단에 실행될 시간(0 2 * * * => 새벽 02시)과 함께, 1 과정에서 만든 cleanLog.sh가 실행되도록 Full path를 입력해준다.

 

3. 정상 동작 확인

crontab -l 을 입력하여 정상적으로 자동 실행 job을 등록했는지 확인하고, 로그들이 정상적으로 정리되는지 확인한다.

 

 

 

반응형

공유하기

facebook twitter kakaoTalk kakaostory naver band