본문 바로가기
Server

crontab 설정 사용방법

by ojava 2016. 11. 8.
반응형

배치프로그램을 또 관리하게 되었다.

WINDOWS 서버에서 스케쥴로 동작하던 과거와 달리 LINUX 서버를 사용하게 되어

crontab 설정으로 배치 스케쥴링을 관리하고 있다.

 

물론 Spring Framework를 사용할 때처럼 Quartz를 사용하여 각 프로젝트별로

배치 프로그램을 관리 및 수행하는 것도 좋은 방법인 듯 하나,

배치만 별도로 관리하거나 중앙에서 관리해야 하는 경우는 crontab이 적절하다고 본다.

 

 

 

crontab 사용법 / 설정방법

 

 

cron, crond, cron daemon, crontab 다 같은 용어로 사용되며

리눅스용 작업 스케쥴러, 프로세스 예약 데몬 등으로 생각하면 된다.

 

먼저 간단한 예시를 보자.

 

 

######## cron tab example ##########

# 분 시 일 월 요일 명령어 순서로 작성하면 됩니다.

# #은 주석입니다. 수행되지 않는 라인이나 주석에 사용하세요.

 

#### Entry for Update HR Information #####

00 06 * * * su - ojava -c /ojava/batch/HR/dept.sh

*/5 * * * * su - ojava -c /ojava/batch/HR/password.sh

 

 

 

예시 파일에 적은 것을 보고 유추할 수 있듯이 crontab 구성 순서는 라인 단위이다.

분(minuit) 시(hour) 일(day) 월(month) 요일(day of the week) 순서로 작성하고

반복되어야 하는 단위는 * 로 작성하면 매번 수행된다.

 

분 단위 작성 가능 범위 : 0 - 59 분

시 단위 작성 가능 범위 : 0 - 23 시

일 단위 작성 가능 범위 : 1 - 31 일

월 단위 작성 가능 범위 : 1 - 12 월

요일 단위 작성 가능 범위 : 0 - 6 (0 일요일, 1 월요일, 2 화요일, 3 수요일, 4 목요일, 5 금요일, 6 토요일)

 

 

 

 

이러한 작성 기준에 따라 예시의 첫번째 dept.sh 은 매일 오전 6시 00분에 수행되며

두번째는 */5 가 뭘 의미하나 하겠지만 그냥 5분 단위로 수행하겠다는 의미이다.

분단위로 주기적으로 수행되어야 하는 배치의 경우 이와 같이 작성하면 된다.

 

*/5 * * * * : 매일 5분 단위

*/20 * * * * : 매일 20분 단위

 00 */4 * * *  : 매일 4시간 단위 정각 (00시, 04시, 08시, 12시, 16시, 20시 -> 6번)

 

 

 

 

혹시 하루 두 번 수행되어야 하는 배치가 있는데 그럼 시간을 어떻게 반으로 나눠야 하나!

라고 고민할 수 있으니 따로 적자면... 오전 6시와 오후 2시에 수행되어야 하는 배치가 있을 땐

 

00 6,14 * * * /ojava/batch/usercustom.sh

 

 

위와 같이 쓰면 오전 6시 오후 2시 정각에 수행되는 설정이 완료된다.

콤마를 사용하여 중복해서 시간 설정이 가능하다.

 

 

 

업무용도로 사용하는 배치가 대부분일테니 평일에만 수행되었으면 하는 바람이 있다면

- 을 잘 알아두면 좋겠다.

 

30 06 * * 1-5 /ojava/batch/HR/employ.sh

 

 

인사정보를 업데이트하는 배치는 매주 월요일 ~ 금요일 오전 6시 30분에 수행된다.

불필요하게 주말에 수행되지 않도록 위와 같이 설정할 수 있다.

 

 

 

- 와 / 를 조합해서 사용하면 좀 더 세분화 된 시간 설정이 가능하다.

 

*/5 7-21 * * * /ojava/timesetting.sh

30 0-10/3 * * * /ojava/every3hour.sh

 

 

매일 7시부터 21시 사이에 5분 단위로 명령어를 수행하도록 하는 배치와

0시 부터 10시 사이에 3시간 단위로 (0, 3, 6, 9) 30분에 수행되는 배치 설정을 할 수 있다.

 

 

 

원하는 시간에 명령어 또는 배치 프로그램을 수행할 수 있길!

반응형