日記

Node.jsのプログラムを定期的に実行する

毎週実行とか、毎日何時に実行とか、そういう動きをさせたいプログラムがあると思います。
そんな時に使える2つを紹介します。

どっちかを導入してみてね。違いはよく知らん。

node-schedule

$ npm install node-schedule

app.jsを毎日13時に実行させたい場合です。

schedule.js

let schedule = require('node-schedule');
let app =require('./app.js');

let j000 = schedule.scheduleJob({hour : 13,minute: 0}, function(){
  app.post();
 });

app.js側

exports.post = function (){

console.log("実行しました");

};

実行

$ node schedule.js

node-cron

$ npm install cron
$ npm install time

schedule-cron.js (app.jsは上と同じ)

const {CronJob} = require('cron');
let app =require('./app.js');

//秒: 0-59 分: 0-59 時: 0-23 日: 1-31 月: 0-11 週: 0-6
//以下は毎日 10:45
new CronJob('00 45 10 * * *', () => {
  app.post();
}, null, true); 

実行

$ node schedule-cron.js

さらに、これらはPM2と組み合わせると良いですよ。

https://logzitsu.tlog.work/%E5%91%BD%E4%BB%A4%E3%82%92%E3%83%87%E3%83%BC%E3%83%A2%E3%83%B3%E5%8C%96%E3%80%82node-js-pm2%E3%82%92%E4%BD%BF%E3%81%8A%E3%81%86/