다섯 칸의 순서
왼쪽부터 분, 시, 일, 월, 요일입니다. 0 9 * * 1은 분이 0, 시가 9, 날짜와 달에는 제한이 없고 요일이 월요일이라는 뜻이라 매주 월요일 아침 9시에 돕니다.
별표는 그 칸에 제한이 없다는 표시입니다. 앞쪽 칸을 별표로 두면 그만큼 자주 돌게 되므로 * * * * *는 1분마다입니다. 분 칸을 실수로 별표로 두면 하루에 1440번 돕니다.
기호 읽는 법
1-5는 1부터 5까지 이어지는 값입니다.1,3,5는 그 세 값만입니다.*/15는 0부터 15씩 건너뜁니다. 분 칸이라면 0, 15, 30, 45가 됩니다.9-17/2는 범위 안에서만 건너뜁니다.- 요일과 월은 이름으로도 씁니다.
MON-FRI,JAN,JUL같은 식입니다.
요일은 0이 일요일이고 6이 토요일입니다. 7도 일요일로 받아 주는 구현이 많아 0과 7은 같은 날을 가리킵니다.
일과 요일을 함께 쓸 때
가장 헷갈리는 자리입니다. 셋째 칸(일)과 다섯째 칸(요일)에 둘 다 값을 주면, cron은 둘을 모두 만족하는 날이 아니라 어느 한쪽이라도 맞는 날에 실행합니다.
0 0 1 * MON은 매월 1일이면서 월요일인 날이 아니라, 매월 1일 또는 매주 월요일입니다. 한 달에 다섯 번쯤 돕니다. 둘 중 하나만 쓰고 나머지 칸은 별표로 두면 이 함정을 피할 수 있습니다.
시간대를 먼저 확인하세요
이 도구가 보여주는 다음 실행 시각은 지금 쓰고 있는 기기의 시간대를 따릅니다. 서버의 cron은 서버 시간대로 도므로 배포 전에 서버가 어느 시간대인지 확인하세요. UTC로 맞춰 둔 서버가 흔해서, 한국 시간으로 아침 9시를 노렸다가 오후 6시에 도는 일이 생깁니다.
서머타임을 쓰는 지역이라면 시계를 돌리는 날에 작업이 건너뛰어지거나 두 번 돌 수 있습니다. 새벽 2시대에 걸리는 작업은 피하는 편이 안전합니다.
여섯 칸짜리는 다른 방언입니다
맨 앞에 초 칸이 붙은 여섯 칸 표현식이 있습니다. Spring과 Quartz가 쓰는 방식이고 표준 crontab과는 다릅니다. 이 도구는 다섯 칸만 읽습니다.
여섯 칸을 그대로 crontab에 넣으면 칸이 하나씩 밀립니다. 초 자리로 쓴 값이 분으로, 분이 시로 읽혀 엉뚱한 시각에 돌므로 어느 쪽 문법인지 먼저 맞춰 두세요.