cron 구문 이해하기

LinuxBeginner
지금 연습하기

소개

Linux 에서 반복 작업을 자동화하는 일은 시스템 유지 관리에 필수적입니다. 매일 백업을 실행하거나, 임시 파일을 정리하거나, 매주 보고서를 생성하는 작업은 Cron이라는 시스템 유틸리티가 처리합니다.

Cron 은 시간을 기준으로 작업을 예약하는 스케줄러입니다. 특정 구성 구문을 사용해 명령을 정확히 언제 실행할지 결정합니다. 이 구성 표를 흔히 "crontab"이라고 합니다.

Cron 은 수십 년 동안 Unix 환경의 일부였습니다. 최신 워크플로 플랫폼과 클라우드 스케줄러가 등장하기 훨씬 전부터 관리자는 예측 가능한 시간에 백업, 정리 작업, 보고서 생성, 유지 관리 작업을 실행하기 위해 cron 을 사용했습니다.

0 2 * * *와 같은 crontab 항목은 처음 보면 이해하기 어려울 수 있습니다. 이 실습에서는 이 구문을 해석하고 작성하는 방법을 배웁니다. 다음 작업을 수행합니다.

  1. 시스템 Crontab 살펴보기: 전역 cron 구성 파일을 확인합니다.
  2. 구문 해석하기: 시간과 날짜를 나타내는 5 개 필드를 이해합니다.
  3. 일정 작성하기: 매일 실행되는 작업에 사용할 올바른 cron 표현식을 작성합니다.

시스템 Cron 테이블 확인하기

cron 구문을 이해하는 빠른 방법은 시스템 전체에서 사용하는 구성 파일 /etc/crontab을 확인하는 것입니다. 이 파일에는 일반적으로 각 필드의 구조를 설명하는 유용한 헤더가 포함되어 있습니다.

이 파일은 실제 구성 파일인 동시에 학습 자료로도 활용할 수 있습니다. cron 구문은 짧고 강력하지만 필드 순서를 이해하기 전에는 잘못 읽기 쉽기 때문에, 많은 Linux 시스템에는 이 파일에 주석이 포함되어 있습니다.

다음 명령을 실행해 파일을 확인합니다.

cat /etc/crontab

출력에서 Example of job definition 섹션을 확인합니다. 배포판에 따라 줄의 내용이 조금 다를 수 있습니다.

## .---------------- minute (0 - 59)
## |  .------------- hour (0 - 23)
## |  |  .---------- day of month (1 - 31)
## |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
## |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
## |  |  |  |  |
## *  *  *  *  * user-name command to be executed

이 그림은 모든 cron 일정이 실행할 명령 앞에 5 개 필드를 둔다는 것을 보여 줍니다.

  1. 분 (Minute) (0-59)
  2. 시 (Hour) (0-23, 24 시간 형식)
  3. 일 (Day of Month) (1-31)
  4. 월 (Month) (1-12)
  5. 요일 (Day of Week) (0-7, 0 과 7 은 모두 일요일을 나타냄)

별표 *는 "모든"을 의미하는 와일드카드입니다. 예를 들어 월 필드의 *는 "매월"을 의미합니다.

cron 표현식은 각 필드가 일정의 범위를 좁혀 주기 때문에 짧게 작성할 수 있습니다. 5 개 필드를 함께 사용하면 반복되는 특정 시점을 나타낼 수 있습니다. 분, 시, 일, 월, 요일 순서로 왼쪽에서 오른쪽으로 읽는 습관을 일찍 익히는 것이 중요합니다.

예를 들어 17 * * * *는 "매시간 17 분에, 매일"을 의미합니다.

구문 파일 준비하기

이제 구조를 이해했으므로 항목을 직접 작성해 봅니다.

cron 표현식을 작성할 임시 텍스트 파일을 만듭니다. 실제 시스템 스케줄러에 추가하기 전에 이렇게 작성해 보는 것이 좋습니다.

cron 항목은 일반 텍스트이지만 시스템에 설치하면 실제 작업을 실행합니다. 표현식을 별도로 작성하면 자동화하기 전에 원하는 일정을 먼저 검토할 수 있습니다.

현재 프로젝트 폴더에 있는지 확인합니다.

cd ~/project

cron_syntax.txt라는 빈 파일을 만듭니다.

touch cron_syntax.txt

파일이 생성되었는지 확인합니다.

ls -l cron_syntax.txt

매일 실행되는 일정 구문 작성하기

"매일 오전 2 시에" 실행해야 하는 작업의 cron 표현식을 작성합니다.

이 요구 사항을 5 개 필드로 나누어 살펴봅니다.

  1. 분: 정확히 2:00 에 실행하려면 0 분이어야 합니다. 값: 0
  2. 시: 오전 2 시를 의미합니다 (24 시간 형식). 값: 2
  3. 일: 매월 매일 실행해야 합니다. 값: *
  4. 월: 일 년 내내 매월 실행해야 합니다. 값: *
  5. 요일: 요일에 관계없이 실행해야 합니다. 값: *

이 값을 조합하면 표현식은 0 2 * * *가 됩니다.

다음 명령으로 이 구문을 파일에 추가합니다.

echo "0 2 * * *" >> cron_syntax.txt

작성한 항목을 확인합니다.

cat cron_syntax.txt

0 2 * * * 구문은 시스템에 "분이 0 이고 시가 2 일 때 명령을 실행하라"고 지시합니다.

다음과 같은 방식으로 이해하면 됩니다. cron 은 현재 시간을 5 개 필드와 비교합니다. 현재 시간이 패턴에 맞으면 cron 이 작업을 실행합니다.

요약

이 실습에서는 cron 스케줄링의 기본 사항을 배웠습니다.

  1. 시스템 구성: /etc/crontab을 확인해 표준 필드 구조를 살펴보았습니다.
  2. 필드 구조: 분, 시, 일, 월, 요일로 구성된 5 개 필드를 확인했습니다.
  3. 표현식 작성: 매일 실행되는 작업에 사용할 구문 (0 2 * * *) 을 성공적으로 작성했습니다.

Linux 환경에서 반복 작업을 자동화하려면 이 구문을 이해하는 것이 중요합니다.