node-cron

먼저 cronUnix기반 운영체제에서 사용되는 가장 유명한 스케쥴러중 하나입니다. node-cron 모듈을 이용하면 모든 crontab 구문으로 작업을 예약하고 스케쥴링할 수 있습니다. node-cron 모듈은 순수 자바스크립트의 작업 스케쥴러로 Unix기반이 아닌 운영체제에서도 사용할 수 있습니다.

node-cron 설치

1
npm install --save node-cron

사용 방법

아래 함수를 사용해 간단히 사용할 수 있습니다.

1
cron.schedule(expression, function, options)

매개변수

매개변수의 내용은 다음과 같습니다.

  • expression string: Cron 표현식
  • function Function: 실행될 작업
  • options Object: 작업 스케쥴링의 설정 (선택)

options

  • scheduled: true / false, 생성된 작업의 예약 여부 (기본: true)
  • timezone: 작업 스케쥴링에 사용되는 타임존
1
2
3
4
5
const cron = require('node-cron');

cron.schedule('* * * * *', () => {
console.log('running a task every minute');
});

Cron 구문

cron.scheule()의 첫번째 매개변수로 들어가는 cron 구문에서 사용 할 수 있는 옵션에 대해 알아보겠습니다.

1
2
3
4
5
6
7
8
9
# ┌────────────── second (optional)
# │ ┌──────────── minute
# │ │ ┌────────── hour
# │ │ │ ┌──────── day of month
# │ │ │ │ ┌────── month
# │ │ │ │ │ ┌──── day of week
# │ │ │ │ │ │
# │ │ │ │ │ │
# * * * * * *
field value
second 0-59
minute 0-59
hour 0-23
day of month 1-31
month 1-12 (or names)
day of week 0-7 (or names, 0 or 7 are sunday)

스케쥴러를 정지하는 방법

stop()을 이용하여 정지할 수 있고, start()를 사용해 작업 스케쥴링을 시작할 수 있습니다.

1
2
3
4
5
6
7
const cron = require('node-cron');

const task = cron.schedule('* * * * *', () => {
console.log('will execute every minute until stopped');
});

task.stop();

스케쥴러를 완전히 제거하는 방법

destroy()를 이용해 정지한 후, 완전히 제거할 수 있습니다.

1
2
3
4
5
6
7
const cron = require('node-cron');

const task = cron.schedule('* * * * *', () => {
console.log('will not execute anymore, nor be able to restart');
});

task.destroy();