계산기 & 툴계산기 & 툴
불러오는 중...
개발


Cron 표현식 생성기 / 해석기

실행 주기를 선택해 Cron 표현식을 생성하거나 기존 Cron 표현식을 해석하는 개발 도구입니다. Unix/Linux 5필드와 Spring 6필드를 구분하고, 각 필드 의미, 유효성, 시간대별 다음 실행 시각, crontab 및 @Scheduled 예시를 확인할 수 있습니다.
실행 주기를 선택해 Cron 표현식을 생성하거나, 이미 작성된 Cron 표현식을 붙여넣어 필드별 의미와 다음 실행 시각을 해석할 수 있습니다. Unix/Linux 5필드와 Spring 6필드를 구분해서 확인할 수 있습니다.

실행 주기를 선택하면 Cron 표현식을 자동으로 생성합니다. 생성 후 필드별 의미와 다음 실행 시각도 함께 확인할 수 있습니다.
매일
실제 Cron 실행 시간대는 서버·컨테이너·스케줄러 설정도 함께 확인하세요.

"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."

이 사이트는 광고 수익으로 유지되고 있습니다. 배너 또는 여기를 클릭하여 구매해 주시면 유지에 도움을 주실 수 있습니다.

Cron 표현식이란?

Cron 표현식은 서버나 애플리케이션에서 작업을 특정 시간이나 반복 주기에 맞춰 실행하기 위해 사용하는 스케줄 표현 방식입니다. 로그 정리, 데이터베이스 백업, 이메일 발송, 배치 작업, 통계 집계, 캐시 갱신처럼 자동으로 반복해야 하는 작업을 "매일 오전 9시", "5분마다", "매주 월요일 자정"과 같은 규칙으로 지정할 수 있습니다.
Cron을 검색하면 crontabSpring Cron이 함께 나오는 경우가 많습니다. 둘 다 Cron 형태의 시간 규칙을 사용하지만 적용되는 환경과 필드 수가 다릅니다. Linux의 crontab은 일반적으로 분·시·일·월·요일의 5개 시간 필드를 사용하고, Spring의 @Scheduled Cron은 맨 앞에 초 필드가 추가된 6필드를 사용합니다.
Cron 표현식이란?

crontab이란?

crontab은 Unix/Linux에서 cron 작업을 등록하고 관리하는 설정 방식이자 명령어 이름입니다. 흔히 "크론탭"이라고 부르며, 사용자의 crontab에는 실행 시간 규칙과 실제 실행할 명령어를 한 줄에 작성합니다. cron 서비스는 등록된 내용을 확인해 조건이 맞는 시점에 명령을 실행합니다.
예를 들어, 아래 crontab 항목은 평일 오전 9시에 /home/app/batch.sh 스크립트를 실행합니다.
0 9 * * MON-FRI /home/app/batch.sh
여기서 0 9 * * MON-FRICron 표현식이고, 그 뒤의 /home/app/batch.sh가 실제 실행할 명령입니다. 즉, Cron 표현식은 "언제 실행할지"를 나타내고 crontab 한 줄은 "언제 무엇을 실행할지"까지 포함한다고 이해하면 쉽습니다.

Unix / Linux crontab 표현식 구조

일반적인 사용자 crontab의 시간 부분은 다음과 같이 5개 필드로 구성됩니다.
분 시 일 월 요일
  • : 0~59
  • : 0~23
  • : 1~31
  • : 1~12 또는 JAN~DEC
  • 요일: 0~7 또는 SUN~SAT, 일반적으로 0과 7은 일요일
사용자별 crontab에서는 보통 이 5개 시간 필드 뒤에 실행할 명령이 이어집니다. 반면 /etc/crontab이나 /etc/cron.d/처럼 시스템 수준에서 사용하는 crontab 형식은 시간 필드와 명령 사이에 실행 사용자 필드가 추가될 수 있습니다.

crontab 사용법

Linux에서 crontab을 직접 사용할 때 가장 자주 사용하는 명령은 다음과 같습니다.
명령어설명
crontab -e현재 사용자의 crontab 편집
crontab -l현재 등록된 crontab 목록 확인
crontab -r현재 사용자의 crontab 삭제
일반적인 등록 순서는 crontab -e로 편집기를 연 뒤 Cron 표현식과 명령을 한 줄로 작성하고 저장하는 방식입니다. 예를 들어, 매일 오전 2시에 백업 스크립트를 실행하려면 다음과 같이 작성할 수 있습니다.
0 2 * * * /home/app/backup.sh
실제 운영 서버에서는 스크립트의 실행 권한, 절대 경로, 환경 변수, 로그 출력 위치도 함께 확인하는 것이 좋습니다. 터미널에서 정상 실행되는 명령이 cron에서는 PATH 등 실행 환경 차이 때문에 실패하는 경우가 있기 때문입니다.

자주 쓰는 crontab 예제

표현식의미
* * * * *매분 실행
*/5 * * * *5분마다 실행
0 * * * *매시간 정각 실행
0 9 * * *매일 오전 9시 실행
0 9 * * MON-FRI월~금 오전 9시 실행
0 0 * * 1매주 월요일 자정 실행
0 0 1 * *매월 1일 자정 실행
0 0 1 1 *매년 1월 1일 자정 실행

Spring Cron은 왜 함께 다루나요?

Cron은 Linux의 crontab에서 널리 알려졌지만, 현재는 여러 애플리케이션 프레임워크와 스케줄러에서도 비슷한 Cron 문법을 사용합니다. Spring도 그중 하나이며, 서버의 crontab 파일을 수정하는 대신 Java 애플리케이션 코드 안에서 메서드의 실행 시간을 예약할 수 있습니다.
예를 들어, Linux 서버 자체에서 백업 스크립트를 실행한다면 crontab이 자연스럽고, Spring 애플리케이션 안에서 정산 배치, 알림 발송, 데이터 동기화 메서드를 주기적으로 호출하려면@Scheduled를 사용할 수 있습니다. 그래서 이 계산기는 둘을 섞어서 같은 문법이라고 가정하지 않고,Unix/Linux 5필드와 Spring 6필드를 별도로 생성·해석합니다.

Spring Cron 6필드 구조

Spring Cron 표현식은 Linux crontab과 달리 맨 앞에 초(second) 필드가 있습니다.
초 분 시 일 월 요일
  • : 0~59
  • : 0~59
  • : 0~23
  • : 1~31
  • : 1~12 또는 JAN~DEC
  • 요일: 0~7 또는 SUN~SAT
  • 일·요일 필드에서 ?, L, W, # 같은 확장 문법도 지원
따라서 Linux crontab에서 매일 오전 9시를 의미하는 0 9 * * *는 5필드이고, Spring에서는 초 값을 앞에 추가해 0 0 9 * * *처럼 작성합니다.

Spring @Scheduled Cron 사용법

Spring에서 @Scheduled를 사용하려면 먼저 스케줄링 기능을 활성화해야 합니다. 일반적으로 설정 클래스에 @EnableScheduling을 추가하고, 반복 실행할 Spring Bean의 메서드에 @Scheduled를 지정합니다.
@Configuration
@EnableScheduling
public class SchedulingConfig {
}
아래 예시는 Asia/Seoul 시간대를 기준으로 월요일부터 금요일까지 매일 오전 9시runBatch() 메서드를 실행하는 형태입니다.
@Scheduled(
    cron = "0 0 9 * * MON-FRI",
    zone = "Asia/Seoul"
)
public void runBatch() {
    // 실행할 작업
}
Spring의 zone 속성을 지정하면 Cron 표현식을 해석할 시간대를 명시할 수 있습니다. 시간대를 지정하지 않을 경우 애플리케이션과 스케줄러가 사용하는 기본 시간대의 영향을 받을 수 있으므로, 해외 서비스나 운영 서버의 시간대가 다른 환경에서는 명시적으로 지정하는 편이 이해하기 쉽습니다.

Spring Cron 예제

표현식의미
* * * * * *매초 실행
*/10 * * * * *10초마다 실행
0 */5 * * * *5분마다 실행
0 0 * * * *매시간 정각 실행
0 0 9 * * *매일 오전 9시 실행
0 0 9 * * MON-FRI월~금 오전 9시 실행
0 0 0 L * *매월 마지막 날 자정 실행
0 0 0 ? * MON#1매월 첫 번째 월요일 자정 실행

Cron에서 자주 사용하는 기호

  • *: 해당 필드의 모든 값. 예: * * * * *는 Unix/Linux에서 매분 실행
  • ,: 여러 값을 나열. 예: 0 9 * * MON,WED,FRI
  • -: 연속된 범위. 예: 0 9 * * MON-FRI
  • /: 필드 범위 안에서 간격 지정. 예: */5 * * * *는 5분마다 실행
  • ?: Spring의 일 또는 요일 필드에서 특정 값을 지정하지 않을 때 사용
  • L: Spring에서 마지막 날 또는 마지막 특정 요일 표현에 사용
  • W: Spring에서 지정한 날짜와 가장 가까운 평일 표현에 사용
  • #: Spring에서 한 달의 N번째 특정 요일 표현에 사용

일(day of month)과 요일(day of week)을 함께 지정할 때

전통적인 Unix/Linux crontab에서는 일 필드와 요일 필드를 둘 다 제한하면 둘 중 하나가 현재 날짜와 일치할 때 실행됩니다. 예를 들어, 30 4 1,15 * 5는 매월 1일과 15일뿐 아니라 금요일 조건도 실행 날짜에 영향을 줍니다. "특정 날짜이면서 특정 요일"이라는 AND 조건으로 단순하게 생각하면 실제 실행 결과가 달라질 수 있습니다.
Cron 구현체마다 세부 문법과 날짜 처리 방식이 다를 수 있으므로, Linux crontab이 아닌 Kubernetes CronJob, GitHub Actions, Quartz, 클라우드 스케줄러 등에서 사용할 때는 해당 플랫폼의 문법을 별도로 확인하는 것이 안전합니다.

Cron과 시간대(Time Zone)

Cron 표현식은 보통 시간 규칙 자체만 표현하며 시간대 정보가 문자열 안에 직접 포함되지 않습니다.따라서 같은 0 9 * * *라도 어떤 시간대를 기준으로 해석하느냐에 따라 실제 실행 시각이 달라질 수 있습니다. 서버 운영체제, 컨테이너, 애플리케이션 또는 스케줄러의 시간대 설정을 함께 확인해야 합니다.
Spring의 @Scheduled에서는 zone 속성으로 시간대를 지정할 수 있습니다. 또한 미국·유럽처럼 일광절약시간제(DST)를 사용하는 지역은 특정 현지 시간이 존재하지 않거나 같은 시간이 두 번 나타날 수 있으므로, 중요한 배치 작업은 DST 전환일의 실행 방식도 확인하는 것이 좋습니다.

Cron, crontab, Spring Cron 중 무엇을 사용해야 하나요?

상황적합한 방식
Linux 서버에서 쉘 스크립트·백업 실행crontab
Spring 애플리케이션 내부 메서드 실행Spring @Scheduled
정확한 고정 간격으로 반복 실행fixedRate / fixedDelay 검토
특정 클라우드·CI 플랫폼에서 예약 실행해당 플랫폼 Cron 문법 확인

Cron 표현식 생성기 / 해석기 활용 예시

이 페이지의 Cron 표현식 생성기에서는 반복 주기를 선택해 Unix/Linux 5필드 또는 Spring 6필드 표현식을 만들 수 있고,Cron 표현식 해석기에서는 기존 표현식을 붙여넣어 각 필드의 의미와 다음 실행 시각을 확인할 수 있습니다.
  • 서버 운영: 로그 정리, DB 백업, 임시 파일 삭제
  • 백엔드 개발: 정산 배치, 리포트 생성, 알림 발송, 캐시 갱신
  • Spring 개발: @Scheduled(cron = "...") 작성 전 주기 확인
  • CI/CD: 정기 빌드, 테스트, 배포 파이프라인 예약
  • 데이터 작업: ETL, 크롤링, 통계 집계, 데이터 동기화
  • 운영 점검: 다른 시간대에서 다음 실행 시각이 언제인지 확인

자주 묻는 질문

  • Q. crontab이란 무엇인가요?
    A. crontab은 Unix/Linux에서 cron 작업을 등록하고 관리하는 설정 방식과 명령어입니다. 보통 5개의 시간 필드 뒤에 실행할 명령을 작성해 반복 작업을 예약합니다.
  • Q. crontab은 어떻게 사용하나요?
    A. 일반적으로 crontab -e로 현재 사용자의 예약 작업을 편집하고, crontab -l로 등록된 내용을 확인합니다. 각 줄에는 실행 시간과 명령을 함께 작성합니다.
  • Q. Cron 표현식에서 * * * * * 는 무슨 뜻인가요?
    A. Unix/Linux 5필드 Cron 기준으로 모든 분, 모든 시, 모든 날짜, 모든 월, 모든 요일에 일치하므로 매분 실행됩니다.
  • Q. 5분마다 실행하려면 어떻게 작성하나요?
    A. Unix/Linux crontab에서는 */5 * * * *, Spring에서는 초 필드를 포함해 0 */5 * * * *처럼 작성할 수 있습니다.
  • Q. 평일 오전 9시에만 실행하려면 어떻게 하나요?
    A. Unix/Linux에서는 0 9 * * MON-FRI, Spring에서는 0 0 9 * * MON-FRI를 사용할 수 있습니다.
  • Q. Cron 표현식과 crontab은 같은 것인가요?
    A. 완전히 같은 의미는 아닙니다. Cron 표현식은 실행 시간을 나타내는 시간 규칙이고, crontab 항목은 그 시간 규칙과 실제 실행할 명령을 함께 저장합니다.
  • Q. 왜 Spring Cron은 6필드인가요?
    A. Spring Cron은 Linux crontab의 5개 시간 필드 앞에 초 필드를 추가해 초·분·시·일·월·요일 순서의 6필드를 사용합니다. 따라서 같은 실행 시각이라도 Linux와 Spring의 표현식 길이가 다릅니다.
  • Q. Spring에서 Cron 표현식은 어디에 사용하나요?
    A. 대표적으로 Spring Bean의 메서드에 @Scheduled(cron = "...")를 지정해 정해진 시간에 메서드를 반복 실행할 때 사용합니다. 스케줄링을 사용하려면 @EnableScheduling을 통해 기능을 활성화할 수 있습니다.
  • Q. @Scheduled에서 한국 시간대를 지정할 수 있나요?
    A. 네. 예를 들어, zone = "Asia/Seoul"을 지정하면 해당 시간대를 기준으로 Cron 표현식을 해석하도록 설정할 수 있습니다.
  • Q. 이 페이지의 다음 실행 시각과 실제 서버 실행 시각이 다를 수 있나요?
    A. 네. 서버 시간대, 컨테이너 설정, DST, Cron 구현체와 플랫폼별 문법 차이에 따라 실제 결과가 달라질 수 있습니다. 이 페이지의 미리보기로 표현식을 점검한 뒤 운영 환경의 설정도 함께 확인하는 것이 좋습니다.

"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."

이 사이트는 광고 수익으로 유지되고 있습니다. 배너 또는 여기를 클릭하여 구매해 주시면 유지에 도움을 주실 수 있습니다.

Cron 표현식 생성기 / 해석기
즐겨찾기
메뉴