如何在 linux 中的特定日期特定时间制作节点 js 文件 运行?
How can I make a node js file run on a certain date at a certain time in linux?
我将离开一个周末,我需要在特定时间和日期将 node.js 文件发送到 运行。我还没有找到通过 javascript 执行此操作的任何方法,但显然 cron 有效(我正在 运行ning linux)。
我创建了一个 运行 是 nod.js 文件的 sh 文件,并通过 cron 运行 获得了它,但它根本没有 运行。我不知道这是否与 Puppeteer + Node.js 有关,但没有脚本 运行...
我也试过使用 at 命令,但也没用
对于 cron,我添加了以下行:
20 14 2 5 * ~/.../start.sh
sh 文件是:
#!/bin/bash
cd Documents/node_bot/
node fog1.js
如果您希望节点应用程序在特定时间 运行 特定代码段,您可以 运行 一个 setTimeout()
递归 "loop" 来检查时间几毫秒。如果特定时间尚未过去,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 方法让您的应用程序有机会屈服于其他进程,允许您将输出记录到控制台,例如,如果您想要显示倒计时。
它应该看起来更像这样(绝对路径以防万一):
20 14 2 5 * cd /path/to/Documents/node_bot && /path/to/node fog1.js
这将于 5 月 2 日在 14:20
运行
我将离开一个周末,我需要在特定时间和日期将 node.js 文件发送到 运行。我还没有找到通过 javascript 执行此操作的任何方法,但显然 cron 有效(我正在 运行ning linux)。
我创建了一个 运行 是 nod.js 文件的 sh 文件,并通过 cron 运行 获得了它,但它根本没有 运行。我不知道这是否与 Puppeteer + Node.js 有关,但没有脚本 运行...
我也试过使用 at 命令,但也没用
对于 cron,我添加了以下行:
20 14 2 5 * ~/.../start.sh
sh 文件是:
#!/bin/bash
cd Documents/node_bot/
node fog1.js
如果您希望节点应用程序在特定时间 运行 特定代码段,您可以 运行 一个 setTimeout()
递归 "loop" 来检查时间几毫秒。如果特定时间尚未过去,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 方法让您的应用程序有机会屈服于其他进程,允许您将输出记录到控制台,例如,如果您想要显示倒计时。
它应该看起来更像这样(绝对路径以防万一):
20 14 2 5 * cd /path/to/Documents/node_bot && /path/to/node fog1.js
这将于 5 月 2 日在 14:20
运行