크론(Cron) 표현식이란 특정한 시간이나 주기로 작업을 예약할 때 사용한다. 이번에 깃허브 액션을 사용하면서 관련 개념들을 공부할 겸 정리해 보았다.
크론 표현식의 기본 구조
크론 표현식은 공백으로 구분된 5개 또는 6개의 필드(연도 추가 시)로 구성되며, 각 필드는 다음과 같은 의미를 갖는다. 필드는 가장 왼쪽이 분이며 그 다음이 시, 일, 월, 요일, 연도에 해당한다.
필드 | 설명 | 허용되는 값 |
---|---|---|
분 (Minute) | 작업이 실행될 분 | 0 - 59 |
시 (Hour) | 작업이 실행될 시 | 0 - 23 |
일 (Day of the Month) | 작업이 실행될 날짜 | 1 - 31 |
월 (Month) | 작업이 실행될 달 | 1 - 12 또는 Jan, Feb, Mar 등 |
요일 (Day of the Week) | 작업이 실행될 요일 | 0 - 6 (0 또는 7이 일요일) 또는 Sun, Mon, Tue 등 |
연도 (Year, 선택적 필드) | 작업이 실행될 연도 | 1970 - 2099 (생략 가능) |
크론 표현식 사용 방법 예시
사실 위의 표만 보고서는 크론 표현식을 제대로 이해하기는 쉽지 않을 것이다. 몇 가지 예시를 통해서 크론 표현식을 사용하는 방법에 대해 알아보자.
1. 매일 오전 8시에 작업 실행
매일 오전 8시에 작업을 실행하고 싶다면, 아래와 같이 표현식을 작성하면 된다. 왼쪽부터 시작하여, 분, 시, 일, 월, 요일, (연도)가 되는데 와일드카드(*)를 사용하면, 특정 시간 대의 모든 값을 의미하게 된다.
0 8 * * *
분 | 시 | 일 | 월 | 요일 | 설명 |
---|---|---|---|---|---|
0 | 8 | * | * | * | 매일 오전 8시에 작업 실행 |
2. 매주 월요일 오전 9시에 작업 실행
위의 예시를 이해했다면, 이번 예시도 그리 어렵지 않게 이해할 수 있다. 요일 부분에 월요일에 해당하는 1
을 입력해주었으며, 이제 매주 월요일 오전 9시에 작업이 실행된다.
0 9 * * 1
분 | 시 | 일 | 월 | 요일 | 설명 |
---|---|---|---|---|---|
0 | 9 | * | * | 1 | 매주 월요일 오전 9시에 작업 실행 |
3. 매월 1일 자정에 작업 실행
0 0 1 * *
분 | 시 | 일 | 월 | 요일 | 설명 |
---|---|---|---|---|---|
0 | 0 | 1 | * | * | 매월 1일 자정에 작업 실행 |
4. 매일 2시간 간격으로 작업 실행
여기서는 새로운 슬래시(/) 기호가 등장했다. 크론 표현식에서 슬래시 기호는 특정 간격으로 작업을 반복할 때 사용한다. 아래와 같이 시간 필드에 */2
라고 작성하면 2시간 간격으로 작업이 반복 실행된다.
0 */2 * * *
분 | 시 | 일 | 월 | 요일 | 설명 |
---|---|---|---|---|---|
0 | */2 | * | * | * | 매일 2시간 간격으로 작업 실행 |
5. 매 15분 마다 작업 실행
15분마다 작업을 반복하려면 분 필드에 아래와 같이 크론 표현식을 작성해주면 된다.
*/15 * * * *
분 | 시 | 일 | 월 | 요일 | 설명 |
---|---|---|---|---|---|
*/15 | * | * | * | * | 매 15분마다 작업 실행 |
6. 매주 월요일부터 금요일까지 오후 6시에 작업 실행
대시를 사용하면 범위를 지정할 수 있다. 예를 들어, 평일에만 작업을 진행하고 주말에는 진행하지 않을 경우에는 월요일부터 금요일에 해당하는 1-5
값을 넣어주면 된다.
0 18 * * 1-5
분 | 시 | 일 | 월 | 요일 | 설명 |
---|---|---|---|---|---|
0 | 18 | * | * | 1-5 | 매주 월요일부터 금요일까지 오후 6시에 작업 실행 |
7. 매년 12월 25일 자정에 작업 실행
0 0 25 12 *
분 | 시 | 일 | 월 | 요일 | 설명 |
---|---|---|---|---|---|
0 | 0 | 25 | 12 | * | 매년 12월 25일 자정에 작업 실행 |
깃허브 액션에서 크론 표현식 사용하기
깃허브 액션에서 크론 표현식을 사용하려면 워크플로우 파일을 .github/workflows/
디렉토리에 YAML 형식으로 작성해주어야 한다. 기본적인 워크플로우 파일 구조는 다음과 같다.
name: Run every midnight
on:
schedule:
- cron: '0 0 * * *'
jobs:
daily-job:
runs-on: ubuntu-latest
steps:
- name: Descrbie the action
run: Your command or script.
마치며
이상으로 크론 표현식에 대해 알아봤다. 최근 개발을 하며 깃허브 액션 작업을 하면서 반복적으로 코드를 실행해야 했는데, 이렇게 하니 별도의 서버 없이도 간단한 구현이 가능했다. 다만, 정확히 30분 간격으로 표현식을 작성해도 꼭 정확한 시간에 코드가 실행되지는 않았다. 어떨 때는, 10분 간격으로 1시간 동안 2번이 실행되는 경우도 있었다.
'개발 > Git' 카테고리의 다른 글
깃랩 사용법 (4) 브랜치 및 커밋, 머지 명령어 설명 (0) | 2020.10.15 |
---|---|
깃랩 사용법 (3) 기본 명령어 정리 (0) | 2020.10.15 |
깃랩 사용법 (2) 깃 기본 용어 정리 (0) | 2020.10.14 |