본문 바로가기
개념/etc

Quartz / Crontab / Cron 표현식

by Hwanii_ 2024. 1. 24.
728x90

Quartz는 Java 기반의 오픈 소스 작업 스케줄링 라이브러리이다.

 

주기적으로 실행되어야 하는 작업을 예약하고 실행할 수 있게 해주는 프레임워크이다.

 

Quartz를 사용하면 시간 기반의 작업 스케줄링을 간편하게 구현할 수 있게된다.

 

예)

Quartz를 사용한 매 5초마다 실행되는 작업을 예약하는 Java 코드.

 

import org.quartz.*;
import org.quartz.impl.StdSchedulerFactory;

public class QuartzExample {
    public static void main(String[] args) throws SchedulerException {
        // Job 생성
        JobDetail job = JobBuilder.newJob(MyJob.class).withIdentity("myJob", "group1").build();

        // Trigger 생성 (5초마다 반복)
        Trigger trigger = TriggerBuilder.newTrigger()
                .withIdentity("myTrigger", "group1")
                .withSchedule(SimpleScheduleBuilder.simpleSchedule().withIntervalInSeconds(5).repeatForever())
                .build();

        // Scheduler 팩토리 생성
        SchedulerFactory schedulerFactory = new StdSchedulerFactory();
        Scheduler scheduler = schedulerFactory.getScheduler();

        // Job과 Trigger를 스케줄러에 등록
        scheduler.scheduleJob(job, trigger);

        // 스케줄러 시작
        scheduler.start();
    }
}

// 실제 실행될 Job 클래스
class MyJob implements Job {
    @Override
    public void execute(JobExecutionContext context) throws JobExecutionException {
        // 여기에 작업 내용을 구현
        System.out.println("Job 실행: " + System.currentTimeMillis());
    }
}

 

 

 

 

 

Crontab은 리눅스 시스템에서 주기적으로 실행되는 작업을 관리하기 위한 명령어 및 시스템 파일이다.

 

특정 시간에 실행되어야 하는 작업을 정의하고 예약할 수 있다.

 

분 (0 - 59) 시 (0 - 23) 일 (1 - 31) 월 (1 - 12) 요일 (0 - 6, 0은 일요일)

 

Crontab 표현식은 hour, day, month, day of month, day of week의 다섯 필드로 나뉜다.

 

예)

Crontab을 사용한 매일 오전 3시에 스크립트를 실행하는 예시.

 

0 3 * * * /경로/스크립트.sh

 

위의 예시에서는 0 3 * * * 으로 설정되어 있어서 매일 3시에 스크립트가 실행된다.

 

 

 

예 2)

 

0 5 * * 1 /경로/스크립트.sh

 

위의 예시에서는 매주 월요일 오전 5시에 스크립트가 실행된다.

 

 

 

예 3)

 

0 0 15 * * /경로/스크립트.sh

 

위의 예시에서는 매월 15일에 스크립트가 실행된다.

 

 

 

예 4)

 

0 * * * * /경로/스크립트.sh

 

위의 예시에서는 매시 정각에 스크립트가 실행된다.

 

 

 

예 5)

 

* * * * * /경로/스크립트.sh

 

위의 예시에서는 매분 스크립트가 실행된다.

 

 

 

 

 

Cron 표현식은 특정 시간을 정의하고 주기적으로 실행되어야 하는 작업을 스케줄링하는 표현식이다.

 

참고 :

Crontab과 차이점은 Crontab은 리눅스에서 사용되는 명령어 및 파일이고,

Cron 표현식은 시간을 특정하는 표준의 표현식이기 때문에 다양한 시스템에서 사용될 수 있다.

 

 

 

Cron 표현식은 초, 분, 시, 일, 월, 요일, 여섯 개의 단위 표현식 필드로 이루어져있다.

 

연도는 생략 가능하다. (연도 까지 작성이 가능하지만)

 

분(0-59) 시(0-23) 일(1-31) 월(1-12) 요일(0-6) 명령어

 

 

 

예)

 

 

 

 

[ 추가 내용 ]

 

크론 표현식에서는 사용되는 특수 문자들이 존재한다.

이것은 표현식의 유연성을 높이기 위해 사용된다.

 

1) * (와일드카드)

*은 해당 필드의 모든 값을 나타낸다.

예를들어 *을 분 필드에 사용하면 매 분에 작업이 실행된다.

 

* * * * * 명령어

 

 

 

2) / (슬래시)

/은 주기를 의미한다.

해당 필드에서 정의된 간격으로 작업을 실행한다.

예를들어 */15 를 작성하면 15분 간격으로 작업을 실행하게된다.

 

*/15 * * * * 명령어

 

 

 

3) , (쉼표)

,는 여러 값을 지정한다.

예를들어 1,3,5로 작성하면 1, 3, 5의 값을 나타낸다.

 

1,3,5 * * * * 명령어

 

 

 

4) - (범위)

-은 일련의 값들을 나타낸다.

예를들어 1-5로 작성하면 1부터 5까지의 값을 나타낸다.

 

1-5 * * * * 명령어

 

 

 

5) L (Last == 마지막)

L은 일주일의 마지막 날 또는 월의 마지막 날을 나타낸다.

 

예) 일주일 중에서 가장 마지막인 일요일 (0) 에 작업을 실행.

 

5 3 * * 0L 명령어

 

 

 

예 2) 각 달의 마지막 날의 새벽 3시 15분에 작업을 실행.

 

15 3 L * * 명령어
반응형

'개념 > etc' 카테고리의 다른 글

SOA / ESB / OSGI  (0) 2024.01.24
WebService / SOAP / WSDL / EAI  (0) 2024.01.24
Servlet & Spring MVC  (0) 2023.10.27
Ajax  (1) 2023.10.25
RESTful API  (0) 2023.10.25