크론 작업 형식 및 시간대

크론 작업은 반복되는 주기로 예약되며 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로 설정된 경우, 월별 요일이 토요일이 아니더라도 월의 첫 번째 날과 매월 토요일에 작업이 실행됩니다. 요일이 제한되지 않은 경우 (*로 설정) 작업은 해당 월의 첫 번째 날에만 실행됩니다.

모든 값 일치

필드의 모든 값과 일치시키려면 별표(*)를 사용합니다. 필드가 별표로 설정되면 다른 필드 조건이 충족되기만 하면 필드가 해당 필드에서 유효한 모든 값과 일치합니다. 필드를 별표로 설정하면 필드가 특정 값으로 제한되지 않으므로 이 방식을 필드를 무제한으로 둔다고 지칭하기도 합니다.

다음 두 예시에서는 분 필드를 무제한으로 둡니다.

  • * 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분, 오전 9시 2분 등입니다.
1시간마다 0 * * * * 매시간 실행됩니다. 예를 들어 오전 9시, 오전 10시, 오전 11시 등입니다.
매일 0 0 * * * 매일 오전 12:00시(24시간 형식의 00:00)에 실행됩니다.
매주 평일
(월~금)
다음은 동일합니다.
  • 0 0 * * 1-5
  • 0 0 * * MON-FRI
월요일, 화요일, 수요일, 목요일, 금요일 오전 12:00시(24시간 형식의 00:00)에 실행
매주 다음은 동일합니다.
  • 0 0 * * 0
  • 0 0 * * 7
  • 0 0 * * SUN
오전 12:00시(24시간 형식의 00:00)에 실행됩니다.
매월 0 0 1 * * 매월 1일 오전 12:00시(24시간 형식의 00:00)에 실행됩니다.
매 분기 다음은 동일합니다.
  • 0 0 1 1,4,7,10 *
  • 0 0 1 JAN,APR,JUL,OCT *
분기의 첫 번째 날 오전 12시(24시간 형식으로 00:00), 표준 분기별 일정(1월 1일, 4월 1일, 7월 1일, 10월 1일)에 실행됩니다.
매년 다음은 동일합니다.
  • 0 0 1 1 *
  • 0 0 1 JAN *
매년 첫 번째 달, 첫 번째 일(1월 1일) 오전 12:00시(24시간 형식: 00:00)에 실행됩니다.

시간대

작업을 만들 때 Google Cloud 콘솔(작업 만들기 페이지의 목록에서 시간대 선택) 또는 gcloud --time-zone 플래그를 통해 일정 계산에 사용할 시간대를 선택할 수 있습니다.

이 필드의 값은 tz 데이터베이스에서 사용되는 시간대 약어여야 합니다. 기본 시간대는 UTC입니다.

일부 시간대의 경우 일광 절약 시간으로 인해 작업이 예기치 않게 실행되거나 실행되지 않을 수 있습니다. 이는 Cloud Scheduler가 현지시간으로 작동하기 때문입니다. 시간이 뒤로 돌아가는 경우와 같이 작업이 예약된 시간이 두 번 발생할 가능성이 있는 경우, 예약된 작업이 비정상적으로 실행될 수 있습니다.

작업이 매우 정확한 주기로 실행되어야 하는 경우 일광 절약 시간을 시행하지 않는 시간대를 선택하는 것이 좋습니다. 특히 Cloud Scheduler에 UTC를 선택하면 이러한 문제가 완전히 배제됩니다.

다음 단계