본문 바로가기
Chapter01/이모저모,, 고모 숙모;

[cs] @Scheduled(cron = "* * * * *")

by EmmaDev_v 2024. 6. 20.

아래는 내가 프로젝트 중 스케줄링할 때 썻던 코드 일부임

월-금 23시59분에 실행되는 스케줄이었음 

    @Scheduled(cron = "0 59 23 ? * MON-FRI")
    public void executeDailyLog() {
        try {
            statService.createAbsentLog();
            System.out.println("일일 출석 로그가 저장되었습니다.");
        } catch (Exception e) {
            System.err.println("출석 로그 저장을 위한 배치 작업 도중 오류가 발생했습니다: " + e.getMessage());
        }
    }

 

크론 스케줄러

유닉스 계열 운영 체제에서 주기적으로 특정 작업을 실행하기 위해 사용되는 시간 기반 작업 스케줄러.
일반적으로 시스템 관리자가 서버 유지 관리 작업을 자동화하기 위해 사용되지만, 개인적인 자동화 작업에도 많이 활용됨.

작업을 실행할 시간과 주기를 지정하기 위해 * * * * * 형식의 스케줄 표현식을 사용.
각 *는 특정 시간 단위를 나타내며, 왼쪽부터 순서대로 다음과 같은 시간 단위를 의미합니다:

  1. 분 (0 - 59)
  2. 시간 (0 - 23)
  3. 일 (1 - 31)
  4. 월 (1 - 12)
  5. 요일 (0 - 7): 0과 7은 모두 일요일을 의미

크론 표현식의 각 필드는 다음과 같은 방식으로 사용됩니다:

  • * : 모든 값
  • 숫자 : 특정 값 (예: 5는 해당 시간 단위에서 5에 해당하는 시간에 실행)
  • , : 여러 값 지정 (예: 1,2,5는 1, 2, 5에 해당하는 시간에 실행)
  • - : 범위 지정 (예: 1-5는 1에서 5까지 실행)
  • / : 간격 지정 (예: */2는 매 2시간마다 실행)

 

예시

  1. 0 0 * * * : 매일 자정 (00:00)에 실행
  2. */15 * * * * : 매 15분마다 실행
  3. 0 6,18 * * * : 매일 오전 6시와 오후 6시에 실행
  4. 0 0 1 * * : 매월 1일 자정에 실행
  5. 0 0 * * 0 : 매주 일요일 자정에 실행

크론 작업은 일반적으로 크론탭(crontab) 파일에 추가되며, crontab -e 명령을 통해 이 파일을 편집할 수 있습니다.

반응형