NodeCronで二つのタスクを実行させたら一方のタスクしか実行されなかった

verison

    "forever": "^4.0.3",
    "node-cron": "^3.0.3"

起こったこと

NodeCronをForever上で実行しているUbuntuサーバーがある。

NodeCronでは以下のようなコードで実行している。

import cron from "node-cron";
import { execSync } from "child_process";

cron.schedule('*/5 * * * *', () => {
  console.log("alive monitoring");
  execSync("cd ../alive_monitoring; npm run ping");
});

cron.schedule("0 7 * * 1-5", () => {
  console.log("get hogehoge new data");
  execSync("cd ../get_hogehoge_new_data; npm run start");
});

しかし、ログではalive_moniteringしか表示されていなかった。

タスクの実行タイミングが重複している可能性

execSyncが悪いのか、それともNodeCronが悪いのかはわからないけど、cronの実行タイミングが全く同じの場合だと一つしか実行されないのでは、という仮説のもと、ソースコードを以下に変更した。

そしたら動いた。

import cron from "node-cron";
import { execSync } from "child_process";

// タイミングが重複したときに一方しか実行されなさそうなため、秒単位で変更
cron.schedule('0 */5 * * * *', () => {
  console.log("alive monitoring");
  execSync("cd ../alive_monitoring; npm run ping");
});

cron.schedule("1 0 7 * * 1-5", () => {
  console.log("get hogehoge new data");
  execSync("cd ../get_hogehoge_new_data; npm run start");
});