회사에서 크론 작업을 예약하는 작업을 받았어요. 오늘은 지식을 더 확고히 하기 위해 Node.js에서 처음부터 작성하기로 결정했어요.
목차
- node-cron 설치
- 예제 코드
- 특정 날짜
- 특정 시간 범위
- 스케줄링 취소
node-cron 설치
npm install --save node-cron
예시 코드
node-cron을 실행하려면 먼저 예약된 함수를 작성해야 합니다. 파일을 생성하는 함수를 작성했습니다
const fs = require('fs/promises');
const cron = require('node-cron');
async function createFile(count){
try{
await fs.copyFile("command.txt",`copied-promise${count}.txt`)
}catch(error){
console.log(error);
}
}
// 매 분마다 새 파일 생성
let count = 0;
cron.schedule("* * * * *",function(){
count++;
createFile(count);
});
노드 크론 표현식의 의미는 다음과 같습니다:
분 시 일 월 요일
* * * * *
일반적으로 초는 포함하지 않을 수 있습니다.
위의 예시에서 * * * * * 는 매 분마다 실행한다는 의미입니다. 왜냐하면 * 는 모든 값을 나타냅니다.
특정 날짜
cron.schedule("15 11 3 8 6", function(){
console.log("안녕하세요");
});
위의 cron은 다음과 같이 번역될 수 있습니다. "8월 3일 토요일 오전 11시 15분에 실행". 요일 부분에서 0과 7은 일요일을 나타내며, 1부터 6까지는 월요일부터 토요일을 나타냅니다.
특정 시간 범위
cron.schedule("*/30 * * * *",function(){
console.log("안녕")
});
이 코드는 30분마다 실행됩니다. '/숫자' 형식은 '매 ~ 숫자'를 의미합니다. 따라서 '/30'은 '매 30분'을 의미합니다.
예약 취소
간단히 stop() 메서드를 호출할 수 있습니다. 이 메서드는 cron.schedule()에서 반환됩니다.
const task = cron.schedule("* * * * *", function () {
console.log("안녕하세요, 세계");
});
setTimeout(function () {
task.stop();
console.log("작업이 중지되었습니다.");
}, 2 * 60 * 1000); // 2분 후 중지됨