크론 표현식과 crontab은 어떻게 다른가요?
크론 표현식은 작업을 실행할 시간 조건입니다. crontab은 이 조건과 실제 명령을 함께 기록하는 설정입니다. Linux 사용자 crontab에서는 시간 필드 5개 뒤에 실행할 명령이 이어집니다.
정기 백업, 로그 정리, 보고서 생성처럼 주기적으로 돌아가야 하는 작업에 사용합니다. 실행 시간 미리보기로 날짜 조건을 먼저 점검하면, 스케줄 문제와 스크립트 실행 문제를 구분하기 쉽습니다. 이 생성기는 명령을 서버에 등록하거나 실행하지 않습니다.
크론탭 실행 주기 만들기
- 빠른 설정에서 가까운 주기를 선택한 뒤 필요한 필드를 바꿉니다.
- 하나의 필드에 여러 값을 넣으려면 범위 / 목록을 사용합니다.
- 기존 설정은 명령 부분을 제외한 표현식만 붙여 넣습니다.
- UTC 기준 다음 실행 시간을 확인한 뒤 표현식을 복사합니다.
크론 문법: 필드 순서와 특수문자
왼쪽부터 분, 시, 일, 월, 요일 순서이며 공백으로 구분합니다. 일요일은 0 또는 7입니다. 월과 요일은 JAN~DEC, SUN~SAT도 사용할 수 있지만 식 안에 한국어 요일 이름을 넣을 수는 없습니다.
| 필드 | 범위 |
|---|---|
| 분 | 0–59 |
| 시 | 0–23 |
| 일 | 1–31 |
| 월 | 1–12 |
| 요일 | 0–7 |
- * : 해당 필드의 모든 값
- , : 여러 값 나열, 예: 0,30
- - : 양 끝을 포함한 범위, 예: 1-5
- / : 필드 범위 안의 간격, 예:
*/15
5분마다, 매일, 매주 실행하는 예제
월~금 설정은 공휴일을 제외하는 기능이 아닙니다. 휴일 여부는 필요한 경우 작업 코드에서 별도로 판단해야 합니다.
| 표현식 | 실행 일정 |
|---|---|
*/5 * * * * | 매시간 0분부터 5분마다 |
0 2 * * * | 매일 02:00 |
0 9 * * 1-5 | 월요일부터 금요일까지 09:00 |
0 8 * * 1 | 매주 월요일 08:00 |
0 0 1 * * | 매월 1일 자정 |
0 0 29 2 * | 윤년 2월 29일 자정 |
Linux 서버에 적용하기
crontab -e로 현재 사용자의 설정을 엽니다. 아래 예제는 매일 02:30에 백업 스크립트를 실행합니다. 이 시간은 cron이 사용하는 서버 시간대 기준입니다.
스크립트는 절대 경로로 지정하고 실행 권한과 cron 서비스 상태를 확인하세요. 브라우저에서 일정이 정상적으로 계산되더라도 서버의 작업 성공까지 확인되는 것은 아닙니다.
30 2 * * * /usr/local/bin/backup.sh크론 표현식 자주 묻는 질문
Spring이나 Quartz에 바로 넣어도 되나요?
이 도구는 Linux의 5개 필드 형식입니다. 초 필드가 있는 스케줄러와 형식이 다를 수 있으므로 그대로 적용하지 마세요. ?, L, W, #과 @reboot는 지원하지 않습니다.
한국 시간으로 미리보기가 나오나요?
미리보기는 UTC로 고정됩니다. 표현식에는 시간대 정보가 들어 있지 않으므로 한국 시간으로 운영한다면 스케줄러의 시간대 설정을 함께 확인해야 합니다.
일과 요일을 모두 지정하면 두 조건을 만족해야 하나요?
두 필드가 모두 제한되면 하나만 일치해도 실행됩니다. 예를 들어 0 9 1 * MON은 매월 1일 또는 매주 월요일 09:00입니다. 어느 한 필드가 *로 시작하면 두 날짜 조건을 모두 검사합니다.
*/5는 저장 후 5분 뒤를 뜻하나요?
아닙니다. 분 필드에서 */5는 매시간 0, 5, 10, 15분 등에 해당합니다. 저장 시각부터 경과 시간을 세는 방식이 아닙니다.
다음 실행 날짜가 없거나 적게 나옵니다.
미리보기는 앞으로 8년까지 검색합니다. 2월 31일은 실제 날짜가 아니며, 윤년 2월 29일은 검색 기간 안에서 5회보다 적게 나올 수 있습니다. @daily 등 일반 별칭은 5개 필드로 변환됩니다.
