유닉스 계열 컴퓨터 운영 체제의 시간 기반 잡 스케줄러
Mac os도 유닉스 계통이기 때문에 cron을 스케줄러로 사용한다.
Cron이 언제 무엇을 하는지 특정 파일에 저장하는 것을 크론탭(Cron table) 이라고 한다.
명령어 | 설명 |
---|---|
crontab -e | 예약작업 설정, 수정 |
crontab -l | 예약작업 목록 보기 |
crontab -r | 예약작업 삭제 |
터미널에서
crontab -e
명령어를 실행한다.
처음 실행하면 아무 내용이 없는 빈 화면이 나오고 이미 설정이 되어 있는 경우라면 내용을 편집할 수 있는 화면이 나온다.
* * * * * date
입력후 저장한다.
매 1분마다 date
명령어를 실행한다.
앞쪽에 있는 와일드카드 5개는 실행하는 주기를 설정하는 것이고 마지막에 있는 <명령어>는 해당 주기에 따라 실행되는 명령어 이다.
* | * | * | * | * |
---|---|---|---|---|
분(0-59) | 시간(0-23) | 일(1-31) | 월(1-12) | 요일(1-7) |
특수문자 | 설명 |
---|---|
* | 모든값 |
- | 범위 지정 |
, | 여러 값을 지정 |
/ | 증가하는 값을 지정 (초기값/증가값) |
L | 마지막 값 지정 |
0 3 * * 2 <명령어>
: 매주 화요일 오전 3시에 <명령어> 실행
0,30 * * * * <명령어>
: 매일 매시간 0분, 30분에 <명령어> 실행
0-30 3 * * * <명령어>
: 매일 3시부터 30분까지 매분마다 <명령어> 실행
*/10 3 * * * <명령어>
: 매일 3시부터 매 10분마다 <명령어> 실행
0 15 10 L * <명령어>
: 매월 말일 오전 10시 15분에 <명령어> 실행
터미널에서
crontab -l
명령어를 실행한다.
저장을 하면 자동으로 예약이 되고 crontab -l
명령어를 통하여 작업을 확인 할 수 있다.
* * * * * date >> /path/logfile.log
를 통하여 로그를 남길 수 있다.
crontab을 다시 설정하고 로그를 확인해보면 잘 실행되고 있는 것을 확인 할 수 있다.
SpringBoot에서 cron은 6자리로 되어있고 맨 앞에 초 가 생기고 나머지는 그대로 라고 보면 된다.
스프링부트에서 사용하려면 @EnableScheduling
을 붙여주어야 하고
@Scheduled
를 정기적으로 실행하고 싶은 메소드에 붙여 놓으면 된다.
매 1초마다 실행되는 것을 볼 수 있다.
잘 읽고갑니다 🙇🏻♀️💡