[Linux] Crontab
- ⭐ Web Programming/Linux
- 2023. 2. 27.
시작하며
항상 크론탭(Crontab) 문법을 작성할 일이 있으면 햇갈려서 그때 그때 다시 찾아봤어야 했었다. 최근 공부 중에 쉽게 크론탭 문법을 작성해주는 사이트를 알게되어 기록해둔다.
Crontab 이란
유닉스 및 리눅스 시스템에서 일정한 간격으로 반복적으로 작업을 실행하기 위해 사용되는 명령어이다. 백업, 리포트 생성과 같이 정기적인 잡업을 수행하기 위해 주로 사용한다.
Cron expression 문법
Unix 기반 시스템 Cron expression
┌───────────── 분 (0 - 59)
│ ┌───────────── 시 (0 - 23)
│ │ ┌───────────── 일 (1 - 31)
│ │ │ ┌───────────── 월 (1 - 12)
│ │ │ │ ┌───────────── 요일 (0 - 6) (일요일부터 토요일까지;
│ │ │ │ │ 특정 시스템에서는 7도 일요일)
│ │ │ │ │ 또는 sun, mon, tue, wed, thu, fri, sat
│ │ │ │ │
* * * * *
항목 | 설명 | 상응 표현 |
@yearly (or @annually) | 매년 1월 1일 자정에 실행 | 0 0 1 1 * |
@monthly | 매월 1일 자정에 실행 | 0 0 1 * * |
@weekly | 매주 일요일 자정에 실행 | 0 0 * * 0 |
@daily (or @midnight) | 매일 자정에 실행 | 0 0 * * * |
@hourly | 매시 0분에 시작 | 0 * * * * |
Spring Cron expression
@Scheduled(cron = "${cron.expression}")
형식으로 spring 에서 사용 가능하다.
┌───────────── 초 (0-59)
│ ┌───────────── 분 (0 - 59)
│ │ ┌───────────── 시 (0 - 23)
│ │ │ ┌───────────── 일 (1 - 31)
│ │ │ │ ┌───────────── 월 (1 - 12) (or JAN-DEC)
│ │ │ │ │ ┌───────────── 요일 (0 - 7)
│ │ │ │ │ │ (0 or 7 is Sunday, or MON-SUN)
│ │ │ │ │ │
* * * * * *
항목 | 설명 | 상응 표현 |
@yearly (or @annually) | 매년 1월 1일 자정에 실행 | 0 0 0 1 1 * |
@monthly | 매월 1일 자정에 실행 | 0 0 0 1 * * |
@weekly | 매주 일요일 자정에 실행 | 0 0 0 * * 0 |
@daily (or @midnight) | 매일 자정에 실행 | 0 0 0 * * * |
@hourly | 매시 0분에 시작 | 0 0 * * * * |
crontab 쉽게 작성하기
크론탭(crontab) 기본 명령어
# crontab 확인
crontab -l
# crontab 입력, 수정
crontab -e
# vi 파일이 열리면 아래와 같이 작업을 입력한다.
* * * * * command
* * * * * ls # 매분마다 ls
# crontab 삭제
crontab -r
마치며
- https://crontab.guru/
- Unix 기반 시스템과 Spring 사이의 cron 표현식의 차이가 있다.
참고
- https://kubernetes.io/ko/docs/concepts/workloads/controllers/cron-jobs/#크론-스케줄-문법
- https://docs.spring.io/spring-framework/docs/current/reference/html/integration.html#scheduling-cron-expression
반응형