본문 바로가기
Tip & Tech/Tech

crontab 설정방법 / SpringBoot Scheduler Cron / 스프링부트 크론탭 설정

by 나비와꽃기린 2020. 12. 29.

-Crontab이란

Windows의 스케줄러와 비슷한 것으로 "특정 시간에 특정 작업을 하게 하는것"

/etc/crontab 파일에 설정된 내용을 읽어서 작업을 수행한다.

 

-크론탭 생성 및 편집 

$crontab -e

 

-현재 크론탭에 있는 내용 확인

$crontab -l

 

-크론탭 삭제

$crontab -r

 

-크론탭 주기 결정

*               *             *          *          *

(0-59)    시간(0-23)    (1-31)    (1-12)    요일(0-7)

요일에서 1 :월요일 / 2 : 화요일 / 3 : 수요일 / 4 : 목요일 / 5 :금요일 / 6: 토요일 / 0,7 : 일요일 의미.

 

-크론탭 예제

(1) 매분실행

* * * * * /test.sh

 

(2) 특정 시간 실행

45 5 * * 5 /test.sh

매주 금요일 5 45분에 실행

 

(3) 반복실행

0,20,40 * * * * /test.sh

',' 로 반복실행을 정의한다.

매일 매시간 0,20,40분에 실행

 

(4) 범위실행

0-30 1 * * * /test.sh

매일 1 0~30분까지 매분 실행

 

(5) 간격실행

*/10 * * * * /test.sh

매일 10분마다 실행

 

 

1. 주기를 설정하는 방법엔 * , - / 등을 사용합니다.

특수기호에 따라 의미하는 바가 다르기 때문에 원하는 설정에 맞게 사용하면 됩니다.


2.
크론탭은 한줄에 하나의 명령만 사용됩니다.

ex) 잘된 예 :  * * * * /test.sh

     잘못된 예 : * * * *

                       test.sh

 

 

-크론탭 로깅

Crontab으로 정기적으로 작업을 처리하는건 ok.

그 다음 로그를 남기기 위해서는 다음과 같이 사용할 수 있습니다.

* * * * /test.sh > /log/test.sh.log 2>&1

매분 실행되는 test.sh의 로그가 test.sh.log '갱신'된다는 설정.

2>&1 을 제거하면 표준출력 내용만 나오게 됨.

 

* * * * /test.sh >> /log/test.sh.log 2>&1

다음은 로그갱신이 아닌 로그'누적'에 대한 설정으로 '>>' 를 사용하면 로그가 누적이 되는걸 확인할 수 있다.

다만 로그가 과하게 쌓이면 리눅스 퍼포먼스에 영향을 주므로 파일을 비워주거나 하는 작업이 필요하다

 

크론탭 백업

crontab -l > /crontab_lnfo.txt

 

.

.

SpringBoot Scheduler Cron

스프링부트에서 사용하는 Cron 6자리로 이루어져 있다.

 

*          *               *             *          *          *

       (0-59)       시간(0-23)    (1-31)    (1-12)    요일(0-7)

 

요일에서 1 :월요일 / 2 : 화요일 / 3 : 수요일 / 4 : 목요일 / 5 :금요일 / 6: 토요일 / 0,7 : 일요일 의미.

 

크론탭 예

(1) 10초마다 실행

*/10 * * * * *

 

(2) 매일 8,9,10 시에 실행

* * 8-10 * * *

 

 

(3) 매일 오전6시 오후7시에 실행

* * 6,19 * * *

 

(4) 매일 8,8 30분 실행

* 0/30 8 * * *

 

 

댓글0