为了账号安全,请及时绑定邮箱和手机立即绑定

如何在Linux上的某个日期和某个时间的某个特定日期运行Node js文件?

如何在Linux上的某个日期和某个时间的某个特定日期运行Node js文件?

开心每一天1111 2021-05-14 18:18:08
我要去一个周末,我需要一个node.js文件才能在特定的时间和日期运行。我还没有找到通过javascript做到这一点的任何方法,但是显然cron可以运行(我正在运行linux)。我创建了一个sh文件,该文件运行nod.js文件,并使其通过cron运行,但根本没有运行。我不知道这是否与Puppeteer + Node.js有关系,但是没有脚本运行过...我也尝试使用了at命令,但是那也不起作用对于cron,我添加了以下行:20 14 2 5 * ~/.../start.shsh文件是:#!/bin/bashcd Documents/node_bot/node fog1.js
查看完整描述

2 回答

?
湖上湖

TA贡献2003条经验 获得超2个赞

如果希望节点应用程序在特定时间运行特定代码段,则可以运行一个setTimeout()递归“循环”,该循环每隔几毫秒检查一次时间。如果未经过特定时间,则setTimeout()回调将自行调用,然后过程将重新开始。但是,如果时间已过去,请执行特定的代码块并停止递归循环。


const triggerTime = new Date(2019, 05, 05, 02, 30, 0, 0)


function otherCodeToRun() {

  // do something...

}


function wait() {

  setTimeout(function() {

    const currentTime = new Date()


    if (currentTime >= triggerTime) {

      otherCodeToRun() // not calling wait ends the recursive loop

    } else {

      wait() // recursively call wait after the timeout completes

    }

  }, 1000) // wait 1 second

}

从理论上讲,该otherCodeToRun()函数可以调用另一个节点进程来运行您的其他文件,或者可以将您的其他文件作为模块加载并以这种方式运行。


另外值得注意的是,您可以在while循环内执行此检查,但是,应用程序将完全阻塞,这意味着它将显得无响应,并可能占用大量CPU周期。setTimeout方法使您的应用程序有机会屈服于其他进程,从而使您可以将输出记录到控制台,例如,如果要显示倒计时。


查看完整回答
反对 回复 2021-05-20
?
慕村225694

TA贡献1880条经验 获得超4个赞

它可能看起来应该更像这样(绝对路径,以防万一):

20 14 2 5 * cd / path / to / Documents / node_bot && / path / to / node fog1.js

它于5月2日14:20运行



查看完整回答
反对 回复 2021-05-20
  • 2 回答
  • 0 关注
  • 114 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信