cron이란?
유닉스 및 유닉스 계열 운영 체제에서 주기적으로 작업을 예약하고 실행하기 위해 사용되는 시간 기반 작업 스케줄링 시스템이다.
Cron 작업은 정해진 시간 또는 주기에 따라 실행되며, 주로 시간, 분, 일, 월, 요일 등의 정보를 사용하기에 자동화된 작업에 유용하게 쓰인다.
구성필드
@Scheduled(cron = "0 0 * * * ?")
분 (0-59) 시 (0-23) 일 (1-31) 월 (1-12) 요일 (0-6)
위와 같이 각 필드는 하나의 의미를 가진다.
- 분 (Minute): 0부터 59까지의 값으로 해당 분에 작업을 수행할 시간을 지정한다.
- 시 (Hour): 0부터 23까지의 값으로 해당 시간에 작업을 수행할 시간을 지정한다.
- 일 (Day of Month): 1부터 31까지의 값으로 해당 날짜에 작업을 수행할 날짜를 지정한다.
- 월 (Month): 1부터 12까지의 값으로 해당 월에 작업을 수행할 월을 지정한다.
- 요일 (Day of Week): 0부터 6까지의 값으로 해당 요일에 작업을 수행할 요일을 지정한다. (0: 일요일 ~ 6: 토요일)
* 과 ?
* : 모든 가능한 값을 나타낸다. 예를 들어, * * * * * 는 매 분마다, 매 시간마다, 매 일자마다, 매 월마다, 매 요일마다 작업을 실행하겠다는 의미이다.
? : "일자" 또는 "요일" 필드에서만 사용된다. 특정한 필드 값을 지정하지 않고 해당 필드의 값에 대해 무시한다는 의미이다. 예를 들어, * * * ? *는 매 분마다 실행되지만 요일과 일자에 대한 제한을 두지 않겠다는 뜻이다.
예시
* * * * *: 매 분마다, 매 시간마다, 매 일자마다, 매 월마다, 매 요일마다 실행
0 0 * * *: 매일 자정에 실행
* * * ? *: 매 분마다 실행 (일자를 고려하지 않음)
0 0 ? * MON: 매주 월요일에 자정에 실행
0 2 * * *: 매일 오전 2시에 작업 실행
30 8 * * 1-5: 월요일부터 금요일까지 매일 오전 8시 30분에 작업 실행
0 */3 * * *: 매 3시간마다 작업 실행
0 0 1 1 *: 매년 1월 1일에 작업 실행
'JAVA' 카테고리의 다른 글
[Java] 자바의 리플렉션 (Reflection) 이란? (0) | 2023.08.29 |
---|---|
Java 의 Robot 클래스란? (0) | 2023.08.28 |
로그 레벨로 로그를 효율적으로 사용하기 (0) | 2023.08.14 |
로깅을 System.out.println() 로 하면 안되는 이유 (0) | 2023.08.14 |
[JAVA] LocalDate 날짜 비교하기 .isBefore() / .isAfter() / .isEqual() (0) | 2023.08.11 |