Cron Expressions 예제

GilLog·2021년 12월 29일
0

Linux

목록 보기
6/6
post-custom-banner

import

크론 표현식(Cron Expressions)[오늘도 MadPlay!]

Cron

CronUnix 계열 O/S의 작업 스케줄러 명령 Utility이다.

Unix 기반 Server에서 특정 주기마다 일정 작업(Command, Shell Script)을 실행시킬 때 사용한다.


Cron을 실행시킬 때 Scheduling의 Parameter로 사용되는 표현식을,

Cron Expressions라고 한다.

오늘은 이 Cron을 사용할 때의 표현식에 대해서 알아보려한다.


Cron Expressions

구성

먼저 Cron Expressions의 구성을 살펴보면 아래와 같다.

// Total Cron Expressions(including Quartz)
# ┌───────────── 초(0 - 59)
# │ ┌───────────── 분(0 - 59)
# │ │ ┌───────────── 시간(0 - 23)
# │ │ │ ┌───────────── 요일(1 - 31)
# │ │ │ │ ┌───────────── 월(1 - 12)
# │ │ │ │ │ ┌───────────── 주(0 - 6)(일요일~토요일,
# │ │ │ │ │ 7은 일부 시스템에서 일요일이기도 함)
# │ │ │ │ │ │ ┌──────────────── 년(생략 or 1970 ~ 2099)
# │ │ │ │ │ │ │
# * * * * * * * <실행 명령>

Cron Expressions는 7개의 Field가 존재하는데,

Unix O/S에서는 초, 년을 제외한 5개의 Field를 사용하고,

Quartz라는 Java Application Scheduler Library에서는 7개의 Field를 모두 사용한다.

// Unix Cron Expressions
# ┌───────────── 분(0 - 59)
# │ ┌───────────── 시간(0 - 23)
# │ │ ┌───────────── 요일(1 - 31)
# │ │ │ ┌───────────── 월(1 - 12)
# │ │ │ │ ┌───────────── 주(0 - 6)(일요일~토요일,
# │ │ │ │ 7은 일부 시스템에서 일요일이기도 함)
# │ │ │ │ │
# │ │ │ │ │
# * * * * *  <실행 명령>

Field

Cron ExpressionsField에는 특수문자의 조합이 올 수 있다.

이제 Cron Expressions의 각 Field에 올 수 있는 값을 살펴보면 아래와 같다.

초(Seconds)

  • 값 범위 : 0 ~ 59
  • 특수문자 : * , - /

분(Minutes)

  • 값 범위 : 0 ~ 59
  • 특수문자 : * , - /

시(Hours)

  • 값 범위 : 0 ~ 23
  • 특수문자 : * , - /

일(Day of month)

  • 값 범위 : 1 ~ 31
  • 특수문자 : * , - ? L W

월(Month)

  • 값 범위 : 1 ~ 12 또는 JAN ~ DEC
  • 특수문자 : * , - /

주(Day of week)

  • 값 범위 : 0 ~ 6 또는 SUN ~ SAT
  • 특수문자 : * , - ? L #

년(Year)

  • 값 범위 : 생략 또는 1970 ~ 2099
  • 특수문자 : * , - /

특수문자

Cron Expressions에서 사용하는 특수문자는 아래와 같은 상황에서 사용한다.

특수문자용도
*모든 값(매시, 매일, 매주, ...)
?특정 값이 아닌 모든 값, Wild Card
-범위 지정
,여러 값 지정
/증분 값(초기값과 증가치 설정)
L지정 가능 범위 마지막 값
W가장 가까운 평일(WeekEnd) 설정 시
#N번째 특정 요일 설정

예제

Cron Expressions의 구성과 Field를 조합하여 다양한 상황의 기본적인 표현식 예제는 아래와 같다.

// 매 5분마다
// 증분 문자(/) 사용, 년도 Field 생략으로 6개 Field 사용
0 0/5 * * * *


// 매 3시간마다
0 0 0/3 * * *


// 2021년도 매일 07시 05분 마다
// 년도 지정으로 7개 Field 사용
0 5 7 * * * 2021


// 매일 10시 ~ 19시 사이에 10분 마다
// 증분 문자(/), 범위 문자(-) 사용
0 0/10 10-19 * * *


// 매일 10시와 19시에만 10분 마다
// 증분 문자(/), 여러 값 지정(,) 문자 사용
0 0/10 10,19 * * *


// 매달 25일 01시 30분 마다
0 30 1 25 * *


// 매주 월, 금요일 07시와 19시 사이 30분마다
0 30 7-19 ? * MON,FRI


// 매달 마지막날 1530분 마다
// 일자 부분에 사용 가능 범위 마지막 값 문자(L) 사용
0 30 15 L * *

예제 사이트

CronMaker.com 사이트에서 직접 UI 형태표현식과 실제 구동 예제 주기 등도 확인 가능하니,

표현식이 익숙 하지 않을 때 유용하게 사용할 수 있다.

profile
🚀 기록보단 길록을 20.10 ~ 22.02 ⭐ Move To : https://gil-log.github.io/
post-custom-banner

1개의 댓글

comment-user-thumbnail
2022년 1월 8일

유익한 글 감사합니다 b

답글 달기