프로그래밍/JAVA

자바기반 스케줄링 프로그래밍(2) - cron 명령어

빨강토끼 2014. 11. 11. 15:44

cron 은 오랬동안 사용되어오며 스케줄링 성능의 입증되어온 유닉스의 툴이다.


cron 명령어는 OS마다 다소의 차이가 있지만 리눅스 기준으로


$crontab -e [엔터]


1 2 3 4 5  사용자아이디 명령어

 

1: minute (0-59)

2: hour (0-23)

3: day of the month(1-31)

4: month of the year(1-12) OR jan, feb, mar, apr ...
5: day of the week (0-6)(Sunday=0 or 7) OR sun, mon, tue, wed, thu, fri, sat


순으로 입력하고, 명령어란에 여러분이 만든 어플이나 실행스크립트를 넣어서 사용한다.


예를 들어 아래와 같은 명령이 있다고 하면

#date time sync

0 5 * * * root /usr/bin/rdate -s time.bora.net && /sbin/hwclock -w



매일 , 오전 5시 0분에 시스템의 기준시를 맞추는 동작(/usr/bin/rdate -s time.bora.net && /sbin/hwclock -w)을 하게 된다.


다른 예로는 OS X 에서 아래와 같은 명령은 매1분마다 date.txt 라는 파일에 현재시간을 기록하는 cron 명령이다. 

0/1 * * * * date >> /Users/red/date.txt



0/1 같이 다양한 특수문자를 사용할수 있다.


* : 모든 값을 의미.

? : 특정 값을 정하지 않음.

- : 범위를 의미. 예) 0-10이면 0부터 10까지.

, : 값을 추가. 0-10,20-30은 0부터 10까지, 그리고 20부터 30까지.

/ : 증분을 의미. 예) 초에 0/15를 사용하면 15초마다(0, 15, 30, 45) .

L : 마지막을 의미. 날짜에 사용하면 월의 마지막 날을 의미. 

    31, 30 또는 28(윤달에는 29).

W : 주중(weekday)를 의미. 날짜와 같이 쓰면 그 날짜가 주중인 날을 의미. 


로그 파일 백업이나 주기적으로 간단한 동작을 하는  명령이나 프로세스에 적당하다.