[리눅스] 크론탭(crontab)을 이용한 작업 스케쥴링

업데이트:

크론탭(crontab)을 이용한 작업 스케쥴링

참고 링크

1. 크론탭(crontab)이란?

크론탭(crontab)은 리눅스 운영체제에서 배치 작업을 스케쥴링 하기 위한 프로그램 입니다. 크론탭을 이용하면 특정 시각에 작업이 실행되게끔 할 수도 있고, 정기적인 작업 스케쥴링을 할 수도 있습니다.

2. 크론탭 명령어

2.1. 작업 할당

크론탭을 이용해 작업을 할당할때는 다음 커맨드를 입력합니다.

$ crontab -e

위 커맨드를 입력하면 vim과 같은 텍스트 편집기가 열리는데(만약 첫 실행이면, nano사용할 것인지, vim사용할 것인지 물음) 텍스트 편집기를 이용해 작업을 할당하면 됩니다. 구체적인 작업 할당 방법은 잠시 후에 알아보겠습니다.

2.2. 할당된 작업 리스트 확인

현재 어떤 작업이 할당되어 있는지 확인하는 방법은 다음 커맨드를 입력하면 됩니다.

$ crontab -l

3. 작업 할당 방법

크론탭에서는 텍스트 입력을 통해 작업을 할당하는데 할당하는 포맷은 다음과 같습니다.

* * * * * source /home/dlit/work/pred_batch.sh

위 명령어는 매분 source /home/dlit/work/pred_batch.sh명령어를 실행하라는 뜻입니다. 커맨드를 보면 별 표시가 5개 있는데 이 별 표시는 반복실행 주기를 의미합니다. 별 다섯개는 순서대로 다음을 의미합니다.

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

즉 위와 같이 모두 별표시면 매분, 매시간, 매일, 매월, 매요일을 의미합니다. 요일은 0, 7은 일요일을 의미하며 월요일은 1, 토요일은 6에 해당합니다.

23 15 17 5 * source /home/dlit/work/pred_batch.sh

즉 위와 같은 코드는 5월 17일 오후 3시 23분에 해당 스크립트를 돌리라는 의미입니다.

5 2 * * * source /home/dlit/work/pred_batch.sh

위 코든는 매일 오전 2시 5분에 스크립트를 돌리라는 의미입니다.

4. 크론탭 에러 메시지

스케쥴링을 걸어놨는데 다음과 같은 에러가 날때가 있다.

/bin/sh: 1: source: not found

위 로그는 source명령어를 찾을 수 없다는 소리인데, 이는 crontab이 실행되는 기본 쉘이 /bin/sh 인데, /bin/sh에서는 source 명령어를 지원하지 않습니다. 따라서 source 명령어를 사용할 수 없으므로 저런 에러가 나는 것입니다. 해결 방법은 다음 둘중 하나를 하면 됩니다.

4.1. 해결방법(1) 쉘 바꾸기

crontab -e에서 다음과 같이 쉘을 지정하는 커맨드를 입력해줍니다.

SHELL=/bin/bash
5 2 * * * source /home/dlit/work/pred_batch.sh

4.2. 해결방법(2) 마침표 사용

두번째 방법은 source 명령어 대신 마침표를 사용하는 것입니다.

5 2 * * * . /home/dlit/work/pred_batch.sh

태그:

카테고리:

업데이트: