Cron 표현식 생성기

스케줄 작업을 위한 Cron 표현식을 생성합니다. 시각적 빌더로 쉽게 표현식을 만들거나, 기존 표현식을 입력해 설명을 확인하세요.

Cron 표현식
* * * * *
매분 실행됩니다
요일
분(0-59) 시(0-23) 일(1-31) 월(1-12) 요일(0-6, 0=일요일)

Cron 표현식 생성기 가이드

Cron 표현식 알아보기

Cron 표현식은 Unix/Linux 기반 시스템에서 작업 스케줄링을 정의하기 위해 사용하는 문자열 포맷입니다. 분(minute), 시(hour), 일(day of month), 월(month), 요일(day of week) 총 5개의 필드로 구성되어 있으며, 각 필드에 숫자나 특수 문자를 조합해 실행 시점을 지정합니다. 서버 운영자라면 로그 정리, DB 백업, 캐시 초기화 같은 반복 작업을 자동화할 때 반드시 알아야 하는 개념입니다. 이 도구는 cron 문법에 익숙하지 않더라도 시각적 인터페이스로 원하는 스케줄을 쉽게 만들 수 있도록 도와줍니다. 직접 표현식을 입력해 파싱하는 역방향 모드도 지원하므로, 다른 사람이 작성한 crontab을 분석할 때도 유용합니다.

무엇을 할 수 있나요?

  • 시각적 빌더: 드롭다운과 버튼으로 각 필드를 직관적으로 설정할 수 있습니다.
  • 프리셋 템플릿: 매분, 매시간, 매일, 매주, 매월 등 자주 쓰는 패턴을 원클릭으로 적용합니다.
  • 한국어 설명: 생성된 표현식의 의미를 사람이 읽을 수 있는 한국어로 바로 보여줍니다.
  • 표현식 파싱: 기존 cron 표현식을 입력하면 각 필드가 무엇을 뜻하는지 분석해줍니다.
  • 클립보드 복사: 생성된 표현식을 한 번에 복사하여 crontab이나 설정 파일에 바로 붙여넣을 수 있습니다.
  • Quartz 확장 문법: L(Last), W(Weekday), #(N번째) 같은 확장 문법도 지원합니다.

사용 가이드

  1. 페이지 상단에서 '시각적 빌더' 또는 '표현식 파싱' 모드를 선택합니다.
  2. 시각적 빌더 모드에서는 분, 시, 일, 월, 요일 각 필드를 드롭다운으로 설정합니다.
  3. 빠른 설정이 필요하면 프리셋 버튼(매분 실행, 매일 자정, 평일 오전 9시 등)을 클릭합니다.
  4. 표현식이 생성되면 하단에 한국어 설명이 함께 표시됩니다.
  5. 표현식 파싱 모드에서는 기존 cron 표현식(예: 0 9 * * MON-FRI)을 입력합니다.
  6. 입력된 표현식의 각 필드별 의미와 실행 스케줄을 확인합니다.
  7. 복사 버튼을 눌러 결과를 클립보드에 저장합니다.

Cron 필드 설명

필드 허용 값 특수 문자
0-59 * , - /
0-23 * , - /
1-31 * , - / L W
1-12 또는 JAN-DEC * , - /
요일 0-6 또는 SUN-SAT * , - / L #

추천 활용법

  • 서버 관리: 매일 새벽 3시에 오래된 로그 파일을 자동 삭제하는 스케줄 설정 (0 3 * * *)
  • DB 백업: 매주 일요일 자정에 데이터베이스 전체 백업을 수행 (0 0 * * 0)
  • 모니터링 알림: 5분마다 서버 상태를 점검하고 이상 시 슬랙 알림 전송 (*/5 * * * *)
  • 리포트 생성: 매월 1일 오전 9시에 월간 매출 리포트를 이메일로 발송 (0 9 1 * *)

참고사항

  • crontab에 등록하기 전에 반드시 표현식의 의미를 확인하세요. 실수로 매분 실행되는 작업을 등록하면 서버에 부하가 걸립니다.
  • 서버 시간대(timezone)와 cron 실행 시간대가 다를 수 있으니, date 명령으로 서버 시간을 먼저 확인하세요.
  • L, W, # 같은 확장 문법은 표준 Unix cron에서 지원하지 않습니다. Quartz Scheduler나 Spring에서만 사용 가능합니다.
  • 요일 필드에서 0과 7 모두 일요일을 나타내지만, 호환성을 위해 0을 쓰는 것이 안전합니다.
  • 복잡한 스케줄은 여러 개의 crontab 항목으로 나누는 것이 유지보수에 유리합니다.

Q&A

Q: * (별표)는 무엇을 의미하나요?

별표(*)는 해당 필드의 "모든 값"을 의미합니다. 분 필드에 *를 넣으면 매분, 시 필드에 넣으면 매시, 요일 필드에 넣으면 매일을 뜻합니다.

Q: */5는 어떤 뜻인가요?

슬래시(/)는 간격을 나타냅니다. */5는 "5단위마다"라는 의미로, 분 필드에서 사용하면 0분, 5분, 10분, 15분... 이렇게 5분 간격으로 실행됩니다.

Q: 하이픈(-)과 콤마(,)의 차이는 무엇인가요?

하이픈은 연속 범위를 나타냅니다. 1-5는 1, 2, 3, 4, 5를 모두 포함합니다. 콤마는 개별 값을 나열할 때 사용하며, 1,3,5는 1과 3과 5만 해당됩니다.

Q: MON, JAN 같은 영문 이름을 사용할 수 있나요?

네, 표준 Vixie cron에서는 월 필드에 JAN-DEC, 요일 필드에 SUN-SAT 약어를 사용할 수 있습니다. 대소문자는 구분하지 않습니다.

Q: L, W, # 문법은 모든 cron에서 사용 가능한가요?

아닙니다. 이 문법들은 Quartz Scheduler의 확장 기능으로, 표준 Unix crontab에서는 지원되지 않습니다. Java Spring, Jenkins 등 Quartz 기반 시스템에서만 사용할 수 있습니다.

Q: Cron 표현식을 테스트하는 방법이 있나요?

이 도구의 표현식 파싱 모드를 사용하면 실제 등록하기 전에 의미를 확인할 수 있습니다. 실제 서버에서는 crontab -l로 등록된 내용을 확인할 수 있습니다.

Q: 초 단위 실행도 가능한가요?

표준 Unix cron은 분 단위가 최소입니다. 초 단위 실행이 필요하면 Quartz Scheduler(6필드 또는 7필드 형식)를 사용하거나, 스크립트 내에서 sleep을 활용하는 방법이 있습니다.

Q: 데이터가 서버로 전송되나요?

아닙니다. 모든 처리는 브라우저 내에서 로컬로 수행됩니다. 입력한 표현식이나 설정 내용이 외부로 전송되는 일은 없으므로 안심하고 사용할 수 있습니다.

Q: crontab에 등록하려면 어떻게 하나요?

터미널에서 crontab -e 명령으로 편집기를 열고, 생성된 표현식 뒤에 실행할 명령을 붙여 한 줄로 입력하면 됩니다. 예: 0 3 * * * /home/user/backup.sh

Q: 요일 번호에서 0과 7의 차이는 무엇인가요?

대부분의 cron 구현에서 0과 7 모두 일요일을 나타냅니다. 다만 시스템마다 차이가 있을 수 있으므로, 호환성을 위해 0을 사용하거나 SUN이라는 이름을 쓰는 것이 안전합니다.