크론 작업은 반복되는 주기로 예약되며 unix-cron 기반 형식으로 지정됩니다. 작업이 하루에 여러 번 실행되거나 특정 날짜와 특정 달에 실행되도록 일정을 정의할 수 있습니다. (더 이상 사용하지 않는 것이 좋지만 기존 작업에는 계속 기존 App Engine 크론 구문이 지원됩니다.)
크론 작업 형식
Google Cloud 콘솔, Google Cloud CLI 또는 Cloud Scheduler REST API를 사용하여 일정을 설정할 수 있습니다.
일정은 작업 실행 시간을 나타내는 unix-cron 문자열 형식(* * * * *
)을 사용하여 정의됩니다. 이 형식은 한 줄에 5개 필드로 설정됩니다.
시간 필드의 형식과 사용 가능한 값은 다음과 같으며 이 순서를 따라야 합니다.
|------------------------------- Minute (0-59) | |------------------------- Hour (0-23) | | |------------------- Day of the month (1-31) | | | |------------- Month (1-12; or JAN to DEC) | | | | |------- Day of the week (0-6; or SUN to SAT; or 7 for Sunday) | | | | | | | | | | * * * * *
필드 | 유효한 값의 형식 |
---|---|
분 | 0-59 |
시간 | 0-23 |
일 | 1-31 |
월 | 1-12 (또는 JAN에서 DEC까지) |
요일 | 0-6 (또는 SUN에서 SAT까지, 또는 일요일의 경우 7) |
분: 정각에서 얼마의 시간이 지난 후 작업이 실행되는지 분 단위로 나타냅니다. 예를 들어 분이
0
으로 설정되면 작업은 매시 정각에 실행됩니다(정각에서 0분 후이므로). 따라서 시간이 오전 8:00시이면 작업이 오전 8:00시에 실행됩니다.시간: 자정에서 얼마의 시간이 지난 후 작업이 실행되는지 시간 단위로 나타냅니다. 남은 시간(분)은
minute
필드에 표시되므로 가장 가까운 시간으로 내림됩니다. 자정은0
, 정오는12
입니다. 예를 들어 시간이0
으로 설정된 경우 자정 이후 0시간이므로 작업은 자정에 실행됩니다.날짜: 해당 월의 날짜를 나타냅니다. 예를 들어
1
은 해당 월의 1일을 나타냅니다. Cloud Scheduler는 해당 월의 마지막 날을 의미하는L
을 지원하지 않습니다.월: 월을 나타냅니다. 월의 숫자 또는 월 이름의 처음 세 글자를 대문자로 지정합니다. 예를 들어 1월의 경우
1
또는JAN
입니다.요일: 요일을 나타냅니다. 월요일은
1
, 화요일은2
등입니다.0
또는7
은 일요일을 나타낼 수 있습니다. 요일을 숫자로 지정하거나 요일 이름의 처음 세 글자를 대문자로 지정합니다(예: 일요일의 경우SUN
).- 이 필드 중 하나가 별표(
*
)로 제한되지 않는 한day of the month
필드를 포함하는 포괄적OR
로 평가됩니다. 예를 들어 날짜를1
로 설정하고 요일을SAT
로 설정하면 작업이 1일에 실행됩니다. 그리고 1일이 토요일이 아니더라도 토요일마다 작업이 실행됩니다. 요일이 제한되지 않은 경우(*
로 설정) 작업은 해당 월의 첫 번째 날에만 실행됩니다.
- 이 필드 중 하나가 별표(
모든 값 일치
필드의 모든 값과 일치시키려면 별표(*
)를 사용합니다. 필드가 별표로 설정되면 다른 필드 조건이 충족되기만 하면 필드가 해당 필드에서 유효한 모든 값과 일치합니다. 필드를 별표로 설정하면 필드가 특정 값으로 제한되지 않으므로 이 방식을 필드를 무제한으로 둔다고 지칭하기도 합니다.
다음 두 예시에서는 분 필드를 무제한으로 둡니다.
* 0 1 1 1
: 작업이 1월 1일과 월요일 자정 시간에 1분마다 실행됩니다.* * * * *
: 작업이 1분마다 실행됩니다. 다른 각 필드도 무제한이므로 매시간, 매일, 매월 모든 요일에 실행됩니다.
별표는 범위의 특수한 경우, 즉 범위가 필드의 첫 번째 유효한 값으로 시작되고 필드의 마지막 유효한 값으로 끝나는 경우(예: 분 필드의 경우 0-59
)와 같습니다.
범위 일치
값 범위와 일치시키려면 시작 값과 중지 값을 하이픈(-
)으로 구분하여 지정합니다. 범위에 공백을 포함하지 마세요. 범위의 경계도 포함됩니다. 첫 번째 숫자는 두 번째 숫자보다 작아야 합니다. 월 또는 요일에 축약된 이름을 사용하는 경우(예: 1년의 첫 달에 1
대신 JAN
사용) 월 또는 요일 순서에서 첫 번째 값이 두 번째 값보다 앞서야 합니다.
다음 예시는 서로 동일하게 모든 달의 월요일, 화요일, 수요일, 목요일, 금요일에 실행됩니다.
0 0 * * 1-5
0 0 * * MON-FRI
목록 일치
목록에는 범위를 비롯하여 필드에 유효한 모든 값이 포함될 수 있습니다.
값을 쉼표(,
)로 구분하여 지정하면 됩니다. 목록에 공백을 포함하지 마세요.
예를 들면 다음과 같습니다.
0 0,12 * * *
: 작업이 자정과 정오에 실행됩니다.0-5,30-35 * * * *
: 작업이 30분마다(매시 0분 및 매시 30분) 처음 5분간 1분마다 실행됩니다.
범위 값 건너뛰기
범위를 단계마다 건너뛸 비율을 지정하여 범위의 값을 건너뛸 수 있습니다. 이 방식을 단계 함수, 단계 값 또는 비율 표현식 사용이라고도 합니다. 이렇게 하려면 범위를 지정하고 슬래시(/
)와 범위를 건너뛸 비율을 추가합니다.
별표(*
)를 사용하여 필드의 모든 값 범위를 나타낼 수 있습니다. 별표를 사용하는 경우 범위의 첫 번째 값은 분, 시간, 요일(일요일) 필드에서는 0이고 날짜, 월 필드에서는 1입니다.
단계 값은 필드에서 가능한 최댓값보다 클 수 없습니다.
기본 단계는 1이므로 단계 함수 /1
은 단계 함수를 사용하지 않는 것과 동일합니다.
다음은 범위에서 단계 함수를 사용하는 예시입니다.
*/2
: 모든 필드에 유효한 단계 함수입니다. 분 필드의 경우 0, 2, 4, ... , 58과 일치합니다. 시간에서는 0, 2, 4, ... , 22와 일치합니다. 날짜에서는 1, 3, 5, ... , 31(날짜 수가 31개인 달)과 일치합니다. 월에서는 1, 3, 5, ... , 11과 일치합니다. 요일에서는 0, 2, 4, 6과 일치합니다.0-12/2
: 분 및 시간 필드에 유효한 단계 함수입니다. 0, 2, 4, ... , 12와 일치합니다.
다음은 일정에서 단계 함수를 사용하는 예시입니다.
*/2 * * * *
: 작업이 2분마다 실행됩니다.0 0-12/2 * * *
: 작업이 2시간마다 정각에 실행됩니다. 첫 번째 실행은 자정입니다. 마지막 실행은 정오입니다.
샘플 일정
다음 표는 샘플 크론 작업 일정 몇 가지와 그 설명을 보여줍니다.
일정 | 크론 작업 형식 | 설명 |
---|---|---|
1분마다 | * * * * * |
매분 실행됩니다. 예를 들어 오전 9시, 오전 9시 1분, 오전 2시 등입니다. |
1시간마다 | 0 * * * * |
매시간 실행됩니다. 예를 들어 오전 9시, 오전 10시, 오전 11시 등입니다. |
매일 | 0 0 * * * |
매일 오전 12:00시(24시간 형식의 00:00)에 실행됩니다. |
매주 평일 (월~금) |
다음은 동일합니다.
|
월요일, 화요일, 수요일, 목요일, 금요일 오전 12:00시(24시간 형식의 00:00)에 실행 |
매주 | 다음은 동일합니다.
|
오전 12:00시(24시간 형식의 00:00)에 실행됩니다. |
매월 | 0 0 1 * * |
매월 1일 오전 12:00시(24시간 형식의 00:00)에 실행됩니다. |
매 분기 | 다음은 동일합니다.
|
분기의 첫 번째 날 오전 12시(24시간 형식으로 00:00), 표준 분기별 일정(1월 1일, 4월 1일, 7월 1일, 10월 1일)에 실행됩니다. |
매년 | 다음은 동일합니다.
|
매년 첫 번째 달, 첫 번째 일(1월 1일) 오전 12:00시(24시간 형식: 00:00)에 실행됩니다. |
시간대
작업을 만들 때 Google Cloud 콘솔(작업 만들기 페이지의 목록에서 시간대 선택) 또는 gcloud
--time-zone
플래그를 통해 일정 계산에 사용할 시간대를 선택할 수 있습니다.
이 필드의 값은 tz 데이터베이스에서 사용되는 시간대 약어여야 합니다.
기본 시간대는 UTC
입니다.
일부 시간대의 경우 일광 절약 시간으로 인해 작업이 예기치 않게 실행되거나 실행되지 않을 수 있습니다. 이는 Cloud Scheduler가 현지시간으로 작동하기 때문입니다. 시간이 뒤로 돌아가는 경우와 같이 작업이 예약된 시간이 두 번 발생할 가능성이 있는 경우, 예약된 작업이 비정상적으로 실행될 수 있습니다.
작업이 매우 정확한 주기로 실행되어야 하는 경우 일광 절약 시간을 시행하지 않는 시간대를 선택하는 것이 좋습니다. 특히 Cloud Scheduler에 UTC를 선택하면 이러한 문제가 완전히 배제됩니다.