개발 도구
크론 표현식 만들기·풀이
크론 표현식을 한국어로 풀이하고 다음 실행 시각을 시간대에 맞춰 보여 줍니다.
🔒 입력한 내용과 파일은 이 브라우저 안에서만 처리합니다. 서버로 보내지 않습니다.
| 칸 | 값 | 뜻 |
|---|
| # | 실행 시각 | 한국 시간 | 지금부터 |
|---|
| 표현식 | 풀이 | 다음 실행 | 명령 |
|---|
크론 표현식 만들기·풀이 사용법
크론(cron)은 리눅스 서버에서 정해진 시각마다 명령을 자동으로 실행해 주는 기능이고, 그 시각을 적는 다섯 칸짜리 표기가 크론 표현식입니다. 서버의 crontab뿐 아니라 깃허브 액션의 schedule, 쿠버네티스 CronJob, 클라우드의 예약 작업, 스프링의 @Scheduled 에서도 같은 표기를 씁니다. 짧지만 읽기 어렵고 한 칸만 틀려도 엉뚱한 시각에 돌기 때문에, 이 도구는 표현식을 한국어 문장으로 풀고 실제로 언제 실행되는지 날짜로 보여 줍니다.
쓰는 순서
- 맨 위에서 시간대를 고릅니다. 크론이 실제로 돌아가는 서버의 시간대여야 합니다.
- 크론 표현식 칸에 식을 붙여 넣습니다. 새로 만들 때는 자주 쓰는 주기 버튼을 누르거나 분, 시, 일, 월, 요일 칸을 하나씩 채웁니다. 어느 쪽을 고쳐도 서로 맞춰집니다.
- 풀이 문장과 칸별 뜻을 확인합니다.
- 다음 실행 시각 표에서 실제 날짜와 요일을 봅니다. 10개, 30개, 100개까지 볼 수 있습니다.
다섯 칸의 뜻
| 순서 | 칸 | 범위 | 비고 |
|---|---|---|---|
| 1 | 분 | 0~59 | |
| 2 | 시 | 0~23 | 24시간제. 오후 3시는 15 |
| 3 | 일 | 1~31 | |
| 4 | 월 | 1~12 | JAN~DEC 로도 적을 수 있음 |
| 5 | 요일 | 0~6 | 0이 일요일, 6이 토요일. 7도 일요일. SUN~SAT 가능 |
각 칸에는 네 가지 기호를 쓸 수 있습니다. 별표(*)는 "모든 값", 쉼표(1,15)는 "여러 값", 하이픈(9-18)은 "범위", 빗금(*/5)은 "간격"입니다. 9-18/3 처럼 범위와 간격을 함께 쓰면 9, 12, 15, 18이 됩니다.
예시
| 표현식 | 이 도구의 풀이 |
|---|---|
| */5 9-18 * * 1-5 | 평일(월~금) 9~18시 동안 5분마다 실행합니다. |
| 0 9 * * * | 매일 오전 9시 정각에 실행합니다. |
| 30 8 * * 1 | 매주 월요일 오전 8시 30분에 실행합니다. |
| 0 0 1 1 * | 매년 1월 1일 0시 정각 (자정)에 실행합니다. |
| 0 0 13 * 5 | 매월 13일 그리고 매주 금요일 0시 정각 (자정)에 실행합니다. |
첫 번째 식에서 주의할 점은 9-18 이 18시 55분까지 포함한다는 것입니다. 오후 6시 정각에 끝내고 싶다면 시 칸을 9-17 로 적어야 합니다. 다음 실행 시각 표를 보면 이런 차이가 바로 드러납니다.
가장 흔한 실수 두 가지
시간대. 클라우드 서버와 컨테이너, 깃허브 액션은 대부분 UTC로 돕니다. 한국 시간은 UTC보다 9시간 빠르므로 "0 9 * * *"는 한국 시간 오후 6시에 실행됩니다. 한국 시간 오전 9시에 돌리려면 "0 0 * * *"로 적어야 합니다. 시간대를 UTC로 고르면 표에 한국 시간 칸이 함께 나와 몇 시에 도는지 바로 확인할 수 있습니다. 한국 시간으로 0시부터 8시 사이의 작업은 UTC로는 전날이 되므로 요일 칸도 하루 앞당겨야 합니다.
일과 요일을 함께 정하기. 표준 cron은 일 칸과 요일 칸이 둘 다 별표가 아니면 둘 중 하나만 맞아도 실행합니다. 위 표의 마지막 예시가 그렇습니다. "13일이면서 금요일"을 뜻하지 않습니다. 둘 다 맞는 날에만 돌리려면 한쪽만 크론에 적고 나머지는 스크립트 안에서 날짜를 검사해야 합니다. 이런 식을 넣으면 풀이 아래에 안내가 나옵니다.
crontab 통째로 풀이하기
여러 줄 한 번에 (crontab) 탭에 crontab -l 의 결과를 그대로 붙여 넣으면 줄마다 표현식, 풀이, 다음 실행 시각, 명령을 표로 정리합니다. #으로 시작하는 주석과 MAILTO=처럼 변수를 정하는 줄은 건너뜁니다. 앞의 다섯 칸을 표현식으로, 나머지를 명령으로 읽습니다. 예시 버튼을 누르면 여덟 줄 가운데 다섯 줄이 표에 나오고, 시 칸이 25인 마지막 줄은 "8번째 줄: 시 칸의 값 25 은(는) 0~23 범위를 벗어납니다"라고 알려 줍니다. 인수인계받은 서버의 예약 작업을 문서로 정리할 때 표를 CSV로 저장해 쓰면 편합니다.
줄임 표기와 초 칸
- @hourly, @daily(@midnight), @weekly, @monthly, @yearly(@annually)를 읽습니다. @daily 는 0 0 * * * 과 같습니다. @reboot 는 시각이 아니라 부팅할 때 한 번 실행한다는 뜻이라 계산하지 않습니다.
- 칸이 여섯 개이면 맨 앞을 초로 읽습니다. 스프링과 node-cron이 이 방식입니다. 리눅스의 crontab은 초를 받지 않습니다.
- 물음표(?)는 별표와 같게 읽습니다. 쿼츠 스케줄러의 L, W, # 기호는 지원하지 않습니다. 쿼츠는 요일 번호가 1부터 일요일로 시작해 표준과 다르니 숫자 대신 MON, FRI 같은 이름을 쓰는 편이 안전합니다.
알아 둘 점
- */7 처럼 60을 나누어떨어지지 않는 간격은 0, 7, 14 … 56분에 실행된 뒤 다음 시 0분에 다시 시작합니다. 정확히 7분 간격이 이어지지 않습니다.
- 서머타임이 있는 시간대에서 시계가 건너뛰는 시각에 걸린 작업은 그날 실행 목록에서 빠집니다. 실제 동작은 cron 구현마다 조금씩 다릅니다.
- crontab의 명령 안에서 퍼센트 기호(%)는 줄바꿈으로 바뀝니다. date +%Y 같은 명령은 \% 로 적어야 합니다.
- 이 표현식 주소 복사를 누르면 지금 식이 담긴 주소가 복사되어 동료에게 풀이 화면을 그대로 보여 줄 수 있습니다.
자주 묻는 질문
매일 오전 9시에 돌게 했는데 오후 6시에 실행됩니다.
서버의 시간대가 UTC이기 때문입니다. 클라우드 서버, 깃허브 액션, 대부분의 컨테이너는 UTC를 씁니다. 한국 시간 오전 9시에 돌리려면 0 0 * * * (UTC 0시)로 적어야 합니다. 이 도구에서 시간대를 UTC로 고르면 한국 시간으로 언제 도는지 함께 보여 줍니다.
일과 요일을 둘 다 적으면 어떻게 되나요?
둘 다 맞아야 실행되는 것이 아니라 둘 중 하나만 맞아도 실행됩니다. 0 0 13 * 5 는 13일의 금요일이 아니라 매월 13일과 매주 금요일 모두에 실행됩니다. 흔히 틀리는 부분이라 풀이에 이 점을 따로 적어 드립니다.
*/5 와 0/5 는 같은가요?
분 칸에서는 결과가 같습니다. */5 는 전체 범위에서 5씩, 0/5 는 0부터 5씩이라는 뜻입니다. 다만 표준 cron은 0/5 표기를 받지 않는 구현이 있으므로 */5 로 적는 편이 안전합니다.
초 단위로 실행할 수 있나요?
리눅스의 표준 cron은 분이 최소 단위입니다. 스프링, node-cron처럼 칸이 여섯 개인 방식은 맨 앞 칸이 초입니다. 이 도구는 칸이 여섯 개이면 맨 앞을 초로 읽습니다.
L, W, #, ? 같은 기호는 쓸 수 있나요?
? 는 * 와 같은 뜻으로 읽습니다. L(마지막 날), W(가까운 평일), #(몇 번째 요일)은 쿼츠 스케줄러만의 확장이라 이 도구는 풀이하지 않고 지원하지 않는다고 알려 드립니다. 쿼츠는 요일 번호도 1이 일요일로 달라 주의해야 합니다.
함께 쓰면 좋은 도구
마지막 수정 2026-11-09. 있었으면 하는 기능이나 불편한 점은 이 도구에 건의하기로 알려 주세요.