개발 도구

크론 표현식 만들기·풀이

크론 표현식을 한국어로 풀이하고 다음 실행 시각을 시간대에 맞춰 보여 줍니다.

🔒 입력한 내용과 파일은 이 브라우저 안에서만 처리합니다. 서버로 보내지 않습니다.

자주 쓰는 주기

칸값뜻
다음 실행 시각
#실행 시각한국 시간지금부터

크론 표현식 만들기·풀이 사용법

크론(cron)은 리눅스 서버에서 정해진 시각마다 명령을 자동으로 실행해 주는 기능이고, 그 시각을 적는 다섯 칸짜리 표기가 크론 표현식입니다. 서버의 crontab뿐 아니라 깃허브 액션의 schedule, 쿠버네티스 CronJob, 클라우드의 예약 작업, 스프링의 @Scheduled 에서도 같은 표기를 씁니다. 짧지만 읽기 어렵고 한 칸만 틀려도 엉뚱한 시각에 돌기 때문에, 이 도구는 표현식을 한국어 문장으로 풀고 실제로 언제 실행되는지 날짜로 보여 줍니다.

쓰는 순서

  1. 맨 위에서 시간대를 고릅니다. 크론이 실제로 돌아가는 서버의 시간대여야 합니다.
  2. 크론 표현식 칸에 식을 붙여 넣습니다. 새로 만들 때는 자주 쓰는 주기 버튼을 누르거나 분, 시, 일, 월, 요일 칸을 하나씩 채웁니다. 어느 쪽을 고쳐도 서로 맞춰집니다.
  3. 풀이 문장과 칸별 뜻을 확인합니다.
  4. 다음 실행 시각 표에서 실제 날짜와 요일을 봅니다. 10개, 30개, 100개까지 볼 수 있습니다.

다섯 칸의 뜻

순서칸범위비고
1분0~59
2시0~2324시간제. 오후 3시는 15
3일1~31
4월1~12JAN~DEC 로도 적을 수 있음
5요일0~60이 일요일, 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. 있었으면 하는 기능이나 불편한 점은 이 도구에 건의하기로 알려 주세요.