Linux에서 Crontab을 이용하면 주기적으로 쌓인 log 파일을 삭제하거나 생성할 수 있다.

특정 시간에 특정 작업을 하겠다.

라고 한다면 crontab을 사용하자!

출처 : 리눅스 크론탭 사용법

1. 크론탭 사용법

  • 크론탭 설정

    $ crontab -e
    
  • 크론탭 확인

    $ crontab -l
    
  • 크론탭 삭제

    $ crontab -r
    

2. 주기 결정

* * * * *
분(0-59)	시간(0-23) 일(1-31) 월(1-12) 요일(0-7)

요일에서 0과 7은 일요일이고 1은 월요일 6은 토요일

3. 주기별 예제

  • 크론탭 설정 명령어 입력 후 실행하려는 명령어를 입력하고 :wq

    $ crontab -e 
    
  • 매분 test.sh 실행

    * * * * * /home/script/test.sh
    
  • 특정 시간 실행

    매주 금요일 오전 5시 45분에 test.sh 실행

    45 5 * * 5 /home/script/test.sh
    
  • 반복 실행

    매일 매시간 0분 20분 40분에 test.sh 실행

    0-30 1 * * * /home/script/test.sh
    
  • 범위 실행

    매일 1시 0분부터 30분까지 매분 test.sh 실행

    0-30 1 * * * /home/script/test.sh
    
  • 간격 실행

    매 10분마다 test.sh 실행

    */10 * * * * /home/script/test.sh
    
  • 조금 복잡하게 실행

    5일에서 6일까지 2, 3, 4시에 매 10분마다 test.sh 실행

    */10 2,3,4 5-6 * * /home/script/test.sh
    

4. 크론 로깅

  • 해당 처리 내역에 로그를 남기고 싶을 때

    * * * * * /home/script/test.sh > /home/script/test.sh.log 2>&1
    

    위처럼 작성하면 매분마다 test.sh.log 파일이 갱신되어 작업 내용이 어떻게 처리 되었는지 알 수 있다.

    2>&1을 제거하면 표준 출력 내용만 나온다.

  • 지속적으로 로그를 남겨둬야 할 때

    * * * * * /home/script/test.sh >> /home/script/test.sh.log 2>&1
    

    로그가 계속 누적이 되므로 가끔씩 비워주거나 파일을 새로 만들어 주자.

  • 로그가 필요 없을 때

    * * * * * /home/script/test.sh > /dev/null 2>&1
    

5. 크론탭 백업

crontab -l > /home/bak/crontab_bak.txt
  • 자동화하기

    매일 오후 11시 50분에 크론탭 백업

    50 23 * * * crontab -l > /home/bak/crontab_bak.txt