0

我尝试使用 npm 包“cron”和“node-schedule”来完成这项工作,但我做不到。假设我想在下午 6.30 开始 cron 作业,从下午 6 点开始,我希望它每 2 小时执行一次。首先是如果它不是一个确切的时间,我无法让它工作,这意味着如果它不是(1PM,2PM,8PM .....)所以我认为它会在下午 6 点而不是 6.30PM 我运行尝试了这种模式:“0 18-23/2 * * *”应该在 18 点到 23 点之间工作,转义两个小时 [18,20,22,00] 但是一旦过了午夜,它就会停止,直到再次到 18 小时。我希望它每 2 小时执行一次(这意味着它在凌晨 2 点执行,依此类推……) cron 作业可能吗?

4

2 回答 2

1

您可以执行基本的 shell 脚本来检查当前日期和时间是否大于或等于您在执行命令之前指定的日期和时间。请注意,日期和时间以 UTC 格式指定。这将导致 cron 在整点后每 2 小时 30 分钟运行一次,但直到 UTC 时间 2019 年 12 月 3 日下午 6 点之后才会真正激活。另请注意,日期命令可能因 nix* / BSD / OSX 的不同风格而异。

30 */2 * * * if [ $(date --utc +%s) -ge $(date --utc --date "2019-12-03T18:00:00" +%s) ]; then (command) fi
于 2019-12-02T18:58:25.893 回答
0

我相信您正在谈论使用 crontab 来安排作业。

crontab 旨在让您根据许多事情设置频率,但它并非旨在在特定时间“启用”。

所以以下将每两个小时运行一次

 0 0,2,4,6,8,10,12,14,16,18,20,22 * * * (command)

假设它是本月的 1 日,您希望它从下午 6 点开始每两个小时运行一次,我会执行以下操作

 0 18,20,22 1 * * (command)
 0 0,2,4,6,8,10,12,14,16,18,20,22 2 * * (command)

这意味着今天(基于一个月中的一天,它将从 6 点开始运行,明天它将每两个小时运行一次。然后明天的某个时候,我将编辑文件并删除第一行并将一个月中的一天的“2”更改为一个'*'(匹配我给你看的第一行)——现在它总是每两个小时运行一次。

tldr; 编辑 crontab 工作两天,然后在每天上线工作后对其进行编辑。

于 2019-12-02T18:20:16.737 回答