[Crontab] 리눅스 크론탭(Linux Crontab) 설정

    리눅스(Linux)에서 어플리케이션을 돌려야 될 경우, 크론탭을 알아야 되는 건 필수라 할 수 있다. 크론탭은 특정 시간에 특정 작업을 할 수 있게 도와주는 기능으로 Web의 경우 크론탭(ex: spring scheduler)이 내장되어 있는 경우가 있어서 몰라도 상관 없지만, 어플리케이션은 프로세스가 종료되기 때문에 OS에서 이 기능을 해줘야 한다.

     

    source, https://en.wikipedia.org/wiki/Cron

     

    크론탭의 기본 기능

    크론탭 리스트

    crontab -l

    크론탭으로 만든 스케쥴들을 출력한다. 마치 cat으로 텍스트 내용을 출력하는 것과 유사한 모습이다.

     

    크론탭 작성

    crontab -e

    위와 같은 명령어를 한 경우 vi 편집기같은 화면이 뜨게 된다. 스케쥴링을 작성 한 후 vi 편집기처럼 ESC -> 콜론(:) -> wq를 누르면 저장이 된다. 만약 입력한 스케쥴링이 마음에 들지 않는다면 vi 편집기처럼 q!로 강제 종료하면 된다.

     

     

    크론탭 작성

    크론탭은 총 5개의 일정 설정 구간이 있고, 각각의 값을 무시하려면 "*"를 입력하면 된다.

     

    스케쥴링 예시는 /home/needneo 위치에 run_application.sh 파일을 실행시킨다고 가정을 해보며, 아래의 설명을 기반으로 잘 조합을 하면 될 것이다.

     

    a b c d e /hom/needneo/run_application.sh output(선택)

    1. 처음 5개 필드인 a b c d e 는 작업의 시간/날짜 및 반복 등 스케쥴링을 지정합니다.

    2. 5개 필드 이후엔 실행해야 할 스크립트를 지정합니다.

    3. 마지막 output 영역은 선택사항이며, 시스템이 사용자에게 작업 완료를 알리는 방법을 정의한다.

     

     

    스케쥴 설명

    Field 가능한 Value Syntax 설명
    [a] – 분 0 – 59 5 * * * *  매시간 5분마다 실행을 한다
    [b] – 시간 0 – 23 0 5 * * * 매일 오전 5시마다 실행을 한다
    [c] – 일 0 – 31 0 0 5 * *  매월 5일마다 실행을 한다
    [d] – 월 0 = 없음 및 12 = 12월 0 0 0 5 * 5월마다 실행을 한다
    [e] – 요일 0 = 일요일 및 7 = 일요일 0 0 * * 7  현재 위치의 7은 작업이 일요일에만 실행됨을 의미

     

    Output (선택사항)

    크론탭은 스케쥴링을 실행하면 소유자에게 이메일을 보내게 되는데 이 옵션을 끄고 싶다면, 아래와 같은 옵션을 추가한다.

     

    >/dev/null 2>&1

     

    그외 연산자

    별표 (*) 모든 값을 나타낸다.
    쉼표 (,) 개별 값을 지정한다.
    대시 (-) 값의 범위를 나타낸다
    슬래시 (/) 값을 단계로 나누는데 사용된다.
    ex) */5의 5분의 1마다 실행

     

    스케쥴링 예시

    명령문 크론탭 설명
    * * * * * /home/needneo/run_application.sh 매분마다 스케쥴 실행
    30 * * * * /home/needneo/run_application.sh 30분마다 스케쥴 실행
    0 * * * * /home/needneo/run_application.sh 매시간마다 스케쥴 실행
    0 0 * * * /home/needneo/run_application.sh 매일 자정에 스케쥴 실행
    0 5 * * * /home/needneo/run_application.sh 매일 오전 5시에 스케쥴 실행
    0 0 1 * * /home/needneo/run_application.sh 매월 1일마다 스케쥴 실행
    0 0 0 12 * /home/needneo/run_application.sh 12월 1일마다 스케쥴 실행
    0 0 0 0 6 /home/needneo/run_application.sh 토요일 자정에 스케쥴 실행

     

    연관포스팅

    [Spring] 스프링에서 Scheduler 사용하기

    Reference

    https://en.wikipedia.org/wiki/Cron

    https://phoenixnap.com/kb/set-up-cron-job-linux

    댓글

    Designed by JB FACTORY