본문 바로가기

개발이야기/스프링 프레임워크

spring boot scheduler의 cron은 UNIX의 cron과 다르다!

 

 

결론 : Spring boot scheduler의 cron과 unix의 cron은 다르다!

 

spring boot scheduler의 cron에 대한 설명을 살펴보자

@Target({ElementType.METHOD, ElementType.ANNOTATION_TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Repeatable(Schedules.class)
public @interface Scheduled {

    /**
     * A cron-like expression, extending the usual UN*X definition to include
     * triggers on the second as well as minute, hour, day of month, month
     * and day of week.  e.g. {@code "0 * * * * MON-FRI"} means once per minute on
     * weekdays (at the top of the minute - the 0th second).
     * @return an expression that can be parsed to a cron schedule
     * @see org.springframework.scheduling.support.CronSequenceGenerator
     */
    String cron() default "";

    .
    .
    .
}
 

 

 

UNIX cron과 다르게 변수가 총 6개로 이루어져 있루어져 있는 것을 알 수 있다.

  • "0 * * * * MON-FRI" : 주중에 매 분 0초마다 job을 수행
 
이제 기존 UNIX cronjob을 살펴보자 - 변수가 5개
* * * * * command to be executed
- - - - -
| | | | |
| | | | ----- Day of week (0 - 7) (Sunday=0 or 7)
| | | ------- Month (1 - 12)
| | --------- Day of month (1 - 31)
| ----------- Hour (0 - 23)
------------- Minute (0 - 59)

 

 

UNIX cron과 다르게 Spring boot cron은 초 단위까지 설정 가능한 것을 알 수 있다.