特殊的 cronjob 调度
special cronjob scheduling
我有三个脚本,希望每个脚本每 3 分钟 运行,但这样一来,每一分钟都有一个不同的脚本 运行ning。
例如
00:00 script1 is executed
00:01 script2 is executed
00:02 script3 is executed
00:01 script1 is executed
有没有办法在 Debian 中通过 crontab 来完成这项工作?
目前我是这样的:
*/3 * * * * php /Scripts/script1.php &> /dev/null
*/3 * * * * php /Scripts/script2.php &> /dev/null
*/3 * * * * php /Scripts/script3.php &> /dev/null
但这会 运行 所有脚本全部 3 分钟
可能有更奇特的方法,但最简单的方法就是列出您希望他们 运行 的分钟数(其余当然是 * 小时、天等):
0,3,6,9,12,15,18,21,24,27...
1,4,7,10,13,16,19,22,25,28...
2,5,8,11,14,17,20,23,26,29...
每分钟调用一个包装器脚本。
此包装脚本查看(分钟 % 3)并使用剩余部分调用正确的脚本。
cron 中只有一行:nice.
编辑:新想法
您可以通过引入丑陋的 crontab 行来跳过包装器。
我会选择包装器(更干净的 crontab,设置和导出变量的地方,
额外的控制语句),但我认为你应该了解这些可能性。
在 /tmp 中创建测试文件 x0、x1 和 x2,chmod +x 它们,内容为
echo $(date) [=10=] >> /tmp/x.out
制作一个 crontab 行
* * * * * /tmp/x`echo "$(date '+\%M') \% 3" | bc`
等 5 分钟(也许可以给我买黑咖啡?)然后查看 /tmp/x.out.
删除 crontab 条目和新的 /tmp/x* 文件。
我有三个脚本,希望每个脚本每 3 分钟 运行,但这样一来,每一分钟都有一个不同的脚本 运行ning。
例如
00:00 script1 is executed
00:01 script2 is executed
00:02 script3 is executed
00:01 script1 is executed
有没有办法在 Debian 中通过 crontab 来完成这项工作?
目前我是这样的:
*/3 * * * * php /Scripts/script1.php &> /dev/null
*/3 * * * * php /Scripts/script2.php &> /dev/null
*/3 * * * * php /Scripts/script3.php &> /dev/null
但这会 运行 所有脚本全部 3 分钟
可能有更奇特的方法,但最简单的方法就是列出您希望他们 运行 的分钟数(其余当然是 * 小时、天等):
0,3,6,9,12,15,18,21,24,27...
1,4,7,10,13,16,19,22,25,28...
2,5,8,11,14,17,20,23,26,29...
每分钟调用一个包装器脚本。
此包装脚本查看(分钟 % 3)并使用剩余部分调用正确的脚本。
cron 中只有一行:nice.
编辑:新想法
您可以通过引入丑陋的 crontab 行来跳过包装器。
我会选择包装器(更干净的 crontab,设置和导出变量的地方,
额外的控制语句),但我认为你应该了解这些可能性。
在 /tmp 中创建测试文件 x0、x1 和 x2,chmod +x 它们,内容为
echo $(date) [=10=] >> /tmp/x.out
制作一个 crontab 行
* * * * * /tmp/x`echo "$(date '+\%M') \% 3" | bc`
等 5 分钟(也许可以给我买黑咖啡?)然后查看 /tmp/x.out.
删除 crontab 条目和新的 /tmp/x* 文件。