node-cron을 사용하여 node.js에서 특정 작업에 스케줄 설정하기

Cron

Cron 이란 원래 유닉스 계열 컴퓨터에서 특정한 작업을 시간기반으로 반복 실행하는 잡 스케줄러다. 특정 시간에 특정 작업을 꾸준히 실행해야할 일이 있을때 유용하게 쓰이는 기능인데, 해당 기능을 node-cron 이라는 모듈을 사용하여 node.js 에서도 사용할 수 있다.

node-cron 시작하기

다음과 같이 npm을 사용하여 모듈을 우선 설치해준다.

npm install --save node-cron

그리고 node.js 프로젝트에서 다음과 같이 모듈을 불러와준다.

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

그리고 다음과 같은 코드로 스케줄을 세팅한다.

cron.schedule('* * * * *', function(){
  console.log('작업 실행');
});

실행되는 모든 작업은 콜백 함수 안에 작성하면 된다.

Cron Syntax

cron.schedule 메소드의 첫번째 인자 “* * * * *” 가 무엇인지 Cron 을 사용해보지 않은 사람들은 궁금할 것이다. 해당 문자열은 Cron Syntax 이며 이것을 통해 Cron Job 의 실행 주기를 설정할 수 있다. 공식 문서에서는 다음과 같이 설명하고 있다.

보통의 Cron 에서는 최소 분단위까지 총 5자리를 지원하나, node-cron 에서는 초단위를 선택적으로 사용할 수 있어 최대 6자리까지 작성할 수 있다.

1분 마다 실행되는 작업
cron.schedule('*/1 * * * *', function(){
  console.log('1분마다 실행되는 작업');
});
1분,  2분, 3분 일때 실행되는 작업
cron.schedule('1,2,3 * * * *', function(){
  console.log('1, 2, 3분마다 실행되는 작업');
});
1분부터 5분까지 매 1분마다 실행되는 작업
cron.schedule('1-5 * * * *', function(){
  console.log('1분부터 5분까지 매 1분마다 실행되는 작업');
});

1분, 2분, 3분, 4분, 5분 총5번 실행된다.

이외의 다양한 문법이 존재하나, 본 문서는 node-cron 에 대한 문서이므로 모든 문법을 설명하진 않는다.

Cron Syntax Generator

다소 복잡하고 헷갈릴만한 문법이기에 이를 생성해주는 외부 사이트들이 존재한다.