티스토리 뷰

반응형

node-cron을 이용한 NodeJS 스케줄러 설정

node-cron 기본 개념

Cron이란

Cron은 유닉스 계열 컴퓨터 운영 체제의 시간 기반 Job 스케줄러입니다. 소프트웨어 환경을 설정하고 관리하는 사람들은 작업을 고정된 시간, 날짜, 간격에 주기적으로 실행할 수 있도록 스케줄링하기 위해 cron을 사용합니다.


node-cron

node-cron 모듈은 GNU crontab을 기반으로 하는 node.js용 순수 자바 스크립트의 가벼운 작업 스케줄러입니다. 이 모듈을 사용하면 전체 crontab 구문을 사용하여 node.js에서 작업을 예약할 수 있습니다.

node-cron에 대한 자세한 설명은 npm 사이트인 https://www.npmjs.com/package/node-cron에서 확인할 수 있습니다.


node-cron 사용 방법

node-cron 설치

npm을 사용하여 node-cron 모듈을 설치합니다. --save 옵션을 사용하면 package.json에 해당 모듈을 추가할 수 있습니다.

npm install --save node-cron


node-cron 사용

설치가 완료되면 해당 NodeJS 프로젝트에서 node-cron 모듈을 사용할 수 있습니다.

테스트를 위해 NodeJS 프로젝트의 app.js 파일이나 index.js 파일에 다음 내용을 추가합니다. (자신의 NodeJS 프로젝트에서 기본적으로 실행하는 파일에 진행하면 됩니다.)

//////////////////////////////// node-cron /////////////////////////////////
var cron = require('node-cron');

// second minute hour day-of-month month day-of-week
cron.schedule('* * * * *', function(){
  console.log('node-cron 실행 테스트');
});

콜백 함수 안에 실행할 작업을 작성하면 됩니다. 여기에서는 node-cron이 정상적으로 실행되는지만 확인하기 위해 console.log를 작성하였습니다.


node-cron 실행 주기 설정

node-cron 실행 주기

이제 실행 주기를 설정합니다. node-cron이 지원하는 옵션은 다음과 같습니다.


Allowed fields


Allowed values

fieldvalue
second0-59
minute0-59
hour0-23
day of month1-31
month1-12 (or names)
day of week0-7 (or names, 0 or 7 are sunday)


node-cron 실행 주기 설정 예제

cron 실행 주기에 대한 예제는 다음과 같습니다.


Using multiples values

콤마(,)를 사용해 다중 값을 사용할 수 있습니다.

// 다중 값 사용
var cron = require('node-cron');
 
cron.schedule('1,2,4,5 * * * *', () => {
  console.log('매 1, 2, 4, 5분 마다 실행');
});


Using ranges

값의 범위를 사용할 수 있습니다.

// 범위 값 사용
var cron = require('node-cron');
 
cron.schedule('1-5 * * * *', () => {
  console.log('매 1-5분 마다 실행');
});


Using step values

숫자 범위와 '/' 다음에 숫자와 함께 사용할 수 있습니다.

// 숫자 범위 + / + 숫자
var cron = require('node-cron');
 
cron.schedule('1-10/2 * * * *', () => {
  console.log('매 2,4,6,8,10분 마다 실행');
});

숫자 범위 대신 '*'가 와도 무방합니다.

// * + / + 숫자
var cron = require('node-cron');
 
cron.schedule('*/2 * * * *', () => {
  console.log('매 2분 마다 실행');
});


Using names

monthweek day 항목에는 이름이나 약어를 사용할 수 있습니다.

// 이름 사용
var cron = require('node-cron');
 
cron.schedule('* * * January,September Sunday', () => {
  console.log('1월과 9월의 일요일 마다 실행');
});

// 약어 사용
var cron = require('node-cron');
 
cron.schedule('* * * Jan,Sep Sun', () => {
  console.log('1월과 9월의 일요일 마다 실행');
});


반응형
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함