Toolyard

cron 표현식이란?

다섯 필드

cron 표현식은 공백으로 구분한 다섯 필드로 되어 있으며, 스케줄러에게 작업을 언제 실행할지 알려 줍니다. 왼쪽부터 차례로:

분0-59
시0-23
일1-31
월1-12
요일0-6(일요일 = 0)

현재 시각이 모든 필드와 맞을 때 작업이 실행됩니다.

특수 문자

  • * 모든 값.
  • , 목록: 1,15는 1일과 15일.
  • - 범위: 마지막 필드의 1-5는 월요일부터 금요일.
  • / 간격: 분 필드의 */10은 10분마다.

자주 쓰는 일정

*/5 * * * *5분마다
0 * * * *매시 정각
0 0 * * *매일 0시
30 8 * * 1-5평일 8시 30분
0 0 1 * *매월 1일 0시
0 3 * * 0매주 일요일 3시

어떤 표현식이든 cron 표현식 해석기에 붙여 넣으면 뜻을 말로 읽을 수 있고, 다음 실행 시각도 알 수 있습니다.

흔한 함정

  • 시간대: cron은 서버 시계를 쓰며, 많은 경우 UTC입니다. 한국 시간 9시에 돌리려면 UTC로는 0시입니다.
  • 일과 요일 둘 다: 둘 다 지정하면 둘 중 하나만 맞아도 실행됩니다. 둘 다 맞을 때가 아닙니다.
  • 초: 표준 cron에는 초 필드가 없습니다. Quartz나 Spring 같은 일부 시스템은 맨 앞에 초를 더해 필드가 여섯 개가 됩니다.

보이는 대로 동작하지 않는 표현식

표현식의도실제 실행
0 9 1-7 * 1첫째 월요일 09:00매달 1~7일 09:00, 그리고 매주 월요일 09:00
*/15 9-17 * * 1-59시~17시 15분마다평일 09:00~17:45, 17시대 포함
0 0 31 * *매달 말일31일이 있는 일곱 달에만
0 0 29 2 *1년에 한 번윤년에만

첫째 월요일에 실행하려면 1~7일에 실행하고 스크립트 안에서 요일을 확인하세요.

단축 표기

많은 cron은 별칭을 받습니다. @hourly, @daily, @weekly, @monthly, @yearly, 그리고 부팅할 때 한 번 실행하는 @reboot입니다.

서머타임

한국에는 서머타임이 없지만, 서머타임이 있는 나라의 현지 시각으로 도는 서버에서는 1:00~3:00 사이의 작업이 시계를 앞당기는 밤에 건너뛰어지거나 되돌리는 밤에 두 번 실행될 수 있습니다(cron 구현에 따라 다름). 중요한 작업은 이 시간대를 피하거나 서버를 UTC로 운영하세요.

이 가이드에서 쓰는 도구

다른 가이드