Cron

zioo·2022년 2월 21일
0

Backend

목록 보기
33/40

Cron

특정한 시간에 또는 특정 시간 마다 어떤 작업을 자동으로 수행하게 해주고 싶을 때 사용하는 명령어 Cron

유닉스/리눅스 기반의 스케쥴러에도 사용되지만 Quatz 스케줄러 에서도 사용된다. 크론 표현식은 필드와 특수문자를 조합하여 스케쥴링을 조절할 수 있다.

시스템 크론 : cron 시스템에서는 시스템에서 기본적으로 사용하는 cron 설정이 있다.
사용자 크론 : root나 일반 사용자가 자신의 cron 설정을 직접하여 사용하는 사용자 크론이 있다.

CronJob-Kubernetes

크론잡은 매일 오후 6시에 특정 파드를 실행시키는 등 지정한 일정에 따라 잡을 실행 시킬 수 있습니다.

쿠버네티스의 job

  • 잡은 하나 이상의 파드를 지정하고 지정된 수의 파드를 성공적으로 실행하도록 하는 설정 입니다.

  • 노드의 H/W 장애나 재부팅 등으로 인해 파드가 정상 실행이 되지 않았을 경우 job은 새로운 파드를 시작하도록 할 수 있습니다.

  • 백업이나 특정 배치 파일들처럼 한번 실행하고 종료되는 성격의 작업에 사용될 수 있습니다

Crontab

cron 작업을 설정하는 파일

cron 프로세스는 /etc/crontab 파일에 설정된 것을 읽어서 작업을 수행
crontab 파일은 OS 별로 각각 다른 위치에 저장된다.

크론 표현식: 구성

크론 표현식은 아래와 같은 형태로 구성된다. 리눅스/유닉스 크론 표현식에서는 5개 필드가 사용되고, 쿼츠 크론 표현식에서는 7개의 필드가 사용된다.

크론 표현식: 필드

초(Seconds)

  • 값 범위 : 0 ~ 59
  • 허용 특수문자 : , - /
  • 리눅스/유닉스 크론탭에서는 사용되지 않는다.

분(Minutes)

  • 값 범위 : 0 ~ 59
  • 허용 특수문자 : , - /

시(Hours)

  • 값 범위 : 0 ~ 23
  • 허용 특수문자 : , - /

일(Day of month)

  • 값 범위 : 1 ~ 31
  • 허용 특수문자 : , - ? L W

월(Month)

  • 값 범위 : 1 ~ 12 또는 JAN ~ DEC
  • 허용 특수문자 : , - /

주(Day of week)

  • 값 범위 : 0 ~ 6 또는 SUN ~ SAT
  • 허용 특수문자 : , - ? L #

년(Year)

  • 값 범위 : 생략 또는 1970 ~ 2099
  • 허용 특수문자 : , - /
  • 리눅스/유닉스 크론탭에서는 사용되지 않는다.

크론 표현식: 특수문자

  • `` : 모든 값(매시, 매일, 매주처럼 사용한다.)
  • ? : 특정 값이 아닌 어떤 값이든 상관 없음
  • `` : 범위를 지정할 때
  • , : 여러 값을 지정할 때
  • / : 증분값, 즉 초기값과 증가치를 설정할 때
  • L : 지정할 수 있는 범위의 마지막 값 표시
  • W : 가장 가까운 평일(weekday)을 설정할 때
  • # : N번 째 특정 요일을 설정할 때

크론 표현식 예제

매 10분마다

0 0/10 * * * *

Bash

매 3시간마다

0 0 0/3 * * *

Bash

2022년도 매일 14시 30분마다

0 30 14 * * * 2022

Bash

매일 10시 ~ 19시 사이에 10분 간격으로

0 0/10 10-19 * * *

Bash

매일 10시와 19시에만 10분 간격으로

0 0/10 10,19 * * *

Bash

매달 25일 01시 30분에

0 30 1 25 * *

Bash

매주 월, 금요일 10시와 19시 사이 10분마다

0 10 10-19 ? * MON,FRI

Bash

매달 마지막날 15시 30분

0 30 15 L * *

Bash

2021~2022년 매월의 마지막 토요일 오후 1시 20분

0 20 13 ? * 6L 2021-2022

0개의 댓글