node scheduler 만들기 By starseat 2022-02-04 10:28:40 NodeJS Post Tags 간단한 프로젝트를 진행하면서 스케쥴러 기능이 필요한 경우가 생겼다. `linux` 서버라면 `cron` 을 사용하여 `shell script`를 작성하였겠지만 `window server` 라 `cron` 을 사용할 수가 없었다. 물론 `window server` 도 가능은 하지만 프로젝트가 `node` 로 진행되어 스케쥴러도 `node` 로 만들어 보게 되었다. 검색을 해보니 `node-schedule` 이라는 패키지가 있었다. 사용법도 간단하여 바로 사용해 보았다. 패키지를 설치 후에 ``` > npm install node-schedule ``` 작성한 샘플 소스 이다. ```javascript // sample.schedule1.js const schedule = require('node-schedule'); /* * * * * * * ┬ ┬ ┬ ┬ ┬ ┬ │ │ │ │ │ | │ │ │ │ │ └ 주중반복시기 (0 - 7) (0 or 7 일요일) │ │ │ │ └───── 달 (1 - 12) │ │ │ └────────── 일 (1 - 31) │ │ └─────────────── 시 (0 - 23) │ └──────────────────── 분 (0 - 59) └───────────────────────── 초 (0 - 59, OPTIONAL) */ const scheduler = schedule.scheduleJob('*/5 * * * *', () => { // 5분 실행 console.log(getToday() + ' call scheduler'); }); function getToday() { const today = new Date(); const year = today.getFullYear(); const month = ('0' + (today.getMonth() + 1)).slice(-2); const day = ('0' + today.getDate()).slice(-2); const hours = ('0' + today.getHours()).slice(-2); const minutes = ('0' + today.getMinutes()).slice(-2); const seconds = ('0' + today.getSeconds()).slice(-2); return year + '-' + month + '-' + day + ' ' + hours + ':' + minutes + ':' + seconds; } ``` 위 처럼 시간 설정도 가능하지만 아래 처럼 직관적으로 설정 가능하다는게 정말 마음에 들었다. ```javascript // sample.schedule2.js const schedule = require('node-schedule'); const job = schedule.scheduleJob({hour: 2, minute: 10}, () => { console.log('매일 오전 2시 10분에 실행!!'); }) ``` 출처 * [https://www.npmjs.com/package/node-schedule](https://www.npmjs.com/package/node-schedule) * [https://medium.com/nodejs-server/node-schedule-pm2-8f7831ed231e](https://medium.com/nodejs-server/node-schedule-pm2-8f7831ed231e) Previous Post pm2 사용방법 2/2 Next Post [node] window nvm 설치