Unix /Jenkins CRON 표현식

돔푸·2024년 6월 12일

Unix CRON

CRON 표현식은 '주기'를 표현할 때 사용한다.(예 : 매 30분 마다, 매주 월요일 2시마다)
기본적으로 5개의 필드가 있고 다음과 같이 사용한다.

MINUTE HOUR DOM MONTH DOW

MINUTE: 분, 0에서 59까지의 값을 가진다.
HOUR: 시, 0에서 23까지의 값을 가진다.
DOM (Day of Month): 일, 1에서 31까지의 값을 가진다.
MONTH: 월, 1에서 12까지의 값을 가진다.
DOW (Day of Week): 요일, 0에서 7까지의 값을 가진다.(0과 7은 일요일)

-를 통해 일정 범위를 나타낼 수 있다.(시가 13-15면 13시에서 15시)
,를 통해 원하는 값을 나타낼 수 있따.(요일이 3,5면 수요일과 금요일)
특수하게 *은 '모든'이란 뜻을 나타낸다.(분이라면 매분)

예를 들어보자.
매시간 30분 이라고 하면
시간, 일, 월, 요일은 상관이 없으므로 , 분만 30분이므로
30
* * * * 가 된다.(마지막에 연습문제가 첨부해놓을테니 연습하는 것도 좋을 것 같다.)

Jenkins CRON

Jenkins의 CRON 표현식은 추가되는 항목이 있다.

*은 '모든'이라는 뜻이다.
H는 해시로, 랜덤한 분산을 위해 사용한다.(매시간 30분에 빌드되는게 500만개 있을 때, 충돌이 나지 않도록 분산해주는 기능이다.)

Jenkins CRON 표현식으로 매시간을 표현하려면 Unix와 어떻게 다른지 알아보자.(Jenkins가 Unix를 포함하는 개념이기 때문에, Unix와 똑같이 적어도 상관은 없으나, 이왕 H가 있으니 사용하는 것이 좋을 것 같다.)

Unix의 매시간 : 0 * * * *
Jenkins의 매시간 : H
* * * *

신기하다.
SpringBoot에서도 @Scheduled 를 사용할 때 쓰는 표현식이니 알아두면 좋을 것 같다.

문제

  1. 매일 오전 8시에 실행되는 작업의 CRON 표현식을 작성하세요.
  2. 매주 수요일 오후 2시 30분에 실행되는 작업의 CRON 표현식을 작성하세요.
  3. 매월 첫째 날 자정에 실행되는 작업의 CRON 표현식을 작성하세요.
  4. 매 10분마다 실행되는 작업의 CRON 표현식을 작성하세요.
  5. 매월 15일 오후 6시에 실행되는 작업의 CRON 표현식을 작성하세요.
  6. 매주 월요일과 금요일 오전 11시에 실행되는 작업의 CRON 표현식을 작성하세요.
  7. 매일 오후 11시 45분에 실행되는 작업의 CRON 표현식을 작성하세요.
  8. 매 2시간마다 실행되는 작업의 CRON 표현식을 작성하세요.
  9. 매주 토요일과 일요일 오전 9시에 실행되는 작업의 CRON 표현식을 작성하세요.
  10. 매일 오전 1시부터 오후 11시까지 매시간 정각에 실행되는 작업의 CRON 표현식을 작성하세요.

Unix CRON 정답

  1. 0 8 * * *
  2. 30 14 * * 3
  3. 0 0 1 * *
  4. 0/10 * * * *
  5. 0 18 15 * *
  6. 0 11 * * 1,5
  7. 45 23 * * *
  8. 0 /2 * *
  9. 0 9 * * 6,7
  10. 0 1-23 * * *

Jenkins CRON 정답

  1. H 8 * * *
  2. 30 14 * * 3
  3. H 0 1 * *
  4. H/10 * * * *
  5. H 18 15 * *
  6. H 11 * * 1,5
  7. 45 23 * * *
  8. H /2 * *
  9. H 9 * * 6,7
  10. 0 1-23 * * *
profile
나중에 또 모를 것들 모음

0개의 댓글