最初はcrontabで設定すればいいのかな?と思って node.js cron でググっていたら、パッケージがあるとのこと。というわけで、node-cronパッケージを使ってみます。
node.js内で同じ処理を何回も定期実行するのにちょうど良いですね。
あとはこのスクリプトをトリガーするcrontabを設定すればOK。
1.node-cronパッケージをインストール
node install node-cron でパッケージをインストール。

node-cron
A simple cron-like task scheduler for Node.js. Latest version: 3.0.2, last published: 9 months ago. Start using node-cron in your project by running `npm i node...
2. 使い方
使い方は簡単。 node-cronを読み込み、scheduleを設定するだけ。
var cron = require('node-cron'); cron.schedule('* * * * *', () => { console.log("走ってます"); });
2.1 秒 分 時 日 月 曜日 の6種類だが、秒はオプションなので5種類
6つ、半角スペースで区切れば最初は秒が適用され
5つ、半角スペースで区切れば秒は無視で分からの設定になるようです。
2.1.1 カンマ , でその項目に指定した時間を複数設定
1,2 * * * * とすれば、分に1と2が設定されているので、毎時1分と2分に実行。
2.1.2 10-15 とハイフンだと10~15毎分
10-15 * * * * だと、毎時10,11,12,13,14,15分に実行
2.1.3 何分間隔は */2 2分毎に行う
*/3だと3分毎。1-10/2 だと、2,4,6,8,10。割り切れないのは無視。
2.2 関数を呼ぶ
実際はconsole.log()とかではなく、関数を呼ぶと思います。
何かしら完了した時にはprocess.exit();でプロセス完了しています。自分は。
cron.schedule('* * * * *', () => { do_func(); }); async function do_func() { try { mycon = await mysql.createConnection(db_setting); if( !mycon ){ process.exit(1); } } catch(e){ process.exit(1); } ..... }
3. crontabと組み合わせる
例えば、scrape.jsがあったとして、このファイルではデータベースから読み込むurlを取得しスクレイピングする。今日読み込むページがなくなったらprocess.exit()で終了。
crontabは毎日一回、node scrape.jsを実行する という組み合わせで、データベースにurlを登録すれば毎日〇時にscrape.jsが呼ばれ、scrape.jsがスクレイピングしてくれるという形になります。
0 10 * * * /usr/bin/node /home/user/test/scrape.js > /home/user/test/log.log 2>&1
コメント
>node install node-cron でパッケージをインストール。
すみません、たぶんnpm install node-cronの間違いかと思いました。