我是一名程序员,对 crons 了解不多,但我想知道这是否可能。
假设我有一个数组[option1, option2, option3]
和一个在 NodeJS 中运行的名为script.js
. 我想每天凌晨 1 点运行这个脚本。这个cron
命令是:
0 1 * * * node ~/script.js
现在是棘手的部分,我想每天轮换选项,例如星期一我想运行node ~/script.js option1
,第二天node ~/script.js option2
等等。此外,我希望能够在需要时添加/删除选项,但旋转应该保持不变。
这有可能吗?我知道我也可以在节点内执行此操作,但我宁愿从脚本外部执行此操作,并将脚本保持原样。
假设您希望一周中的每一天都有不同的选项。你可以:
对这些有一个单独的 cron 作业:
ETC...
已为您
bash
提供所需的选项:(我没有运行后者,所以它可能需要一些调整 - 但这是一般的想法。)
这很棘手。修改选项列表后轮换保持不变意味着什么?毕竟,您可能会完全重建列表,破坏有关您所在位置的任何线索。
您可能可以做的是设置一个目录,其中包含代表您的选项的文件(通过它们的文件名或它们的内容)。然后,每当 cron 作业执行时,您都会列出该目录,并按上次修改时间对文件进行排序。您采用最旧的条目,
touch
即该文件将其修改时间更改为当前时间,然后使用它来运行脚本。如果你愿意,你也可以在单行中为 cron 编写它,尽管它会变得更难阅读。
添加选项意味着将新文件添加到选项目录。删除选项意味着删除文件。在任何时候,最旧的文件都是下一个要运行的文件,因此将在循环的最后添加新选项,就像刚刚运行的一样。如果您想重新排序选项,您可以按您想要的任何顺序触摸它们。
不,我想不出干净的方法来做到这一点。只需编写一个简单的 shell 包装脚本来检查日期并每天使用所需的选项启动您的节点应用程序。