개발 => 복습 후 재정리 대기/Node.js
[node-schedule][cron] 특정 시간에 동작하기
설치
npm install node-schedule
Cron 표현식
이 모듈은 Cron 표현식으로 시간을 지정할 수 있다.
* * * * * *
┬ ┬ ┬ ┬ ┬ ┬
│ │ │ │ │ │
│ │ │ │ │ └ day of week (0 - 7) (0 or 7 is Sun)
│ │ │ │ └───── month (1 - 12)
│ │ │ └────────── day of month (1 - 31)
│ │ └─────────────── hour (0 - 23)
│ └──────────────────── minute (0 - 59)
└───────────────────────── second (0 - 59, OPTIONAL)
특수문자 의미
Cron 표현식에서 사용되는 특수 문자들이 있다.
- * 모든 값을 의미한다.
- 쉼표 ( ,)
- 쉼표는 한 항목에 여러 목록을 입력할 때 사용된다. 예를 들어, 5 번째 필드 (요일)에 “MON, WED, FRI”를 사용하면 월요일, 수요일, 금요일을 의미한다.
- 하이폰 ( -)
- 하이폰은 범위를 정의한다. 예를 들어 2000-2010 년은 2000 년에서 2010 년 사이의 모든 연도를 나타낸다.
- 퍼센트 ( %)
- 명령에서 백분율 기호 (%)는 백 슬래시 ()로 이스케이프 하지 않는 한 개행 문자로 변경되고 첫 번째 % 이후의 모든 데이터는 표준 입력으로 명령에 전송된다.
비표준 문자
다음은 비표준 문자이며 일부 cron 표현에만 사용할 수 있다.
이 node-schedule에서는 W, L, # 은 지원하지 않는다.
- L
- ‘L’은 ‘마지막(Last)’을 의미한다. day-of-week 필드에서 사용하면 주어진 달의 “지난 금요일”( “5L”)과 같은 구문을 지정할 수 있다. day-of-month 필드에서는 해당 월의 마지막 날을 지정한다.
- W
- W문자는 day-of-month 필드에 사용할 수 있다. 이 문자는 주어진 요일에 가장 가까운 평일 (월 - 금)을 지정하는 데 사용한다. 예를 들어, “15W”를 day-of-month 필드의 값으로 지정하면 의미는 “매월 15 일 가장 가까운 평일”이다. 그래서 15 일이 토요일이라면 14 일 금요일에 이벤트가 발생한다. 15 일이 일요일이면 16 일 월요일에 발생한다. 15 일이 화요일이면 15 일 화요일에 시작한다. 그러나 달의 값으로 “1W”를 지정하고 1 일이 토요일이면 월의 경계는 넘지 않기 때문에, 3일 월요일에 실행된다. W문자는 하루 일만 지정할 수 있고, 목록이나 범위에서는 사용할 수 없다.
- 해시 (#)
- #은 요일 필드에 사용할 수 있으며 1에서 5 사이의 숫자가 와야 한다. 주어진 달의 “두 번째 금요일”과 같은 구문을 지정할 수 있다. 예를 들어, 요일 필드에 “5 # 3”을 입력하면 매월 셋째 금요일이 된다.
- 물음표 (?)
- *대신에 day-of-month 또는 day-of-week 중 하나를 공백으로 남겨 둘 때 사용한다. 어떤 곳에서는 cron 데몬의 시동 시간으로 정의된다. 그래서 cron이 오전 8시 25 분에 시작되면?? * * * * 가 25 8 * * * *로 업데이트되고 다시 시작할 때까지 매일 이 시간에 실행된다.
- 슬래시 ( /)
- 슬래시를 간격과 결합하여 간격 값을 지정할 수 있다. 예를 들어, 분 필드의 * / 5는 5 분마다 나타낸다.
일정 간격
30초마다 실행되는 스케줄
let test = schedule.scheduleJob("30 * * * * *", function () {
let mNow = new Date();
console.log(mNow);
console.log("30초 간격이 아닌, 30초가 될 때 마다 실행");
});
지정 시간
var j = schedule.scheduleJob('0 17 ? * 0,4-6', function(){
console.log('일, 목, 금, 토 중 실행 날짜 17시 0분에 실행');
});
// 매월 9월 1일 오후 6시 40분 3초에 시간 로깅
let job = schedule.scheduleJob('3 40 18 12 9 *', function(){
let mNow = new Date();
console.log(mNow);
}
Date 기반 표현
Cron 기법을 사용하지 않고 싶다면 Date()를 사용해 지정할 수도 있다.
var schedule = require('node-schedule');
var date = new Date(2019, 01, 17, 5, 30, 0);
var j = schedule.scheduleJob(date, function(){
console.log('The world is going to end today.');
});
스케줄 취소
등록한 스케줄을 취소하기 위해서는 cancel() 메서드를 사용할 수 있다.
j.cancel();
'개발 => 복습 후 재정리 대기 > Node.js' 카테고리의 다른 글
[Node.js] express HTTPS 설정 ( cerbot ) (3) | 2022.01.05 |
---|---|
[Jenkins] Node.js - Jenkins - Slack 연동 (0) | 2021.08.16 |
작성중... [Node.js] Swagger 설치, 적용 (0) | 2021.07.16 |
[Node.js] AWS - MySQL 설치 (0) | 2021.07.02 |
[Node.js][Express] 기본 틀 공부중 (5) | 2021.05.25 |
댓글