我是一名程序员,对 cron 了解不多,但我想知道这是否可能。
假设我有一个数组[option1, option2, option3]
和一个在 NodeJS 中运行的脚本,名为script.js
. 我想每天凌晨 1 点运行这个脚本。这个cron
命令是:
0 1 * * * node ~/script.js
Run Code Online (Sandbox Code Playgroud)
现在是棘手的部分,我想每天轮换选项,例如,我想在星期一运行node ~/script.js option1
,第二天node ~/script.js option2
等等。另外,我希望能够在需要时添加/删除选项,但旋转应该保持不变。
这有可能吗?我知道我也可以在节点内执行此操作,但我宁愿从脚本外部执行此操作,并保持脚本原样。
Kon*_*ski 20
假设您希望一周中的每一天都有不同的选择。你可以:
有一个单独的 cron 工作:
0 1 * * 0 node ~/script.js option1
0 1 * * 1 node ~/script.js option2
0 1 * * 2 node ~/script.js option3
Run Code Online (Sandbox Code Playgroud)
等等...
已bash
为您提供所需的选项:
0 1 * * * node ~/script.js case `date +%u` in 0 ) echo option1 ;; 1 ) echo option2 ;; 2 ) echo option3 ;; esac
Run Code Online (Sandbox Code Playgroud)
(我没有运行后者,所以它可能需要一些调整 - 但这是一般的想法。)
MvG*_*MvG 15
另外,我希望能够在需要时添加/删除选项,但旋转应该保持不变。
这很棘手。修改选项列表后轮换保持不变是什么意思?毕竟,您可以完全重建列表,破坏任何关于您所在位置的线索。
您可能会做的是设置一个目录,其中包含代表您的选项的文件(通过它们的文件名或它们的内容)。然后,无论何时执行 cron 作业,您都会列出该目录,并按上次修改时间对文件进行排序。您使用最旧的条目,touch
该文件将其修改时间更改为当前时间,然后使用它来运行脚本。
#!/bin/bash
cd ~/script-options
next=$(ls -rt | head -n1)
touch -- "${next}"
node ~/script.js ${next} or $(<"${next}")
Run Code Online (Sandbox Code Playgroud)
如果你愿意,你也可以为 cron 把它写成一行,但它会变得更难阅读。
添加选项意味着将新文件添加到选项目录。删除选项意味着删除文件。在任何时候,最旧的文件都是下一个要运行的文件,因此将在循环的最后添加新选项,就好像刚刚运行过一样。如果您想重新排列选项,您可以按您想要的任何顺序触摸它们。
归档时间: |
|
查看次数: |
3202 次 |
最近记录: |