特殊的cronjob调度

时间:2015-02-16 17:52:25

标签: linux cron

我有三个脚本,并且希望每个脚本每3分钟运行一次,但是每分钟运行一个不同的脚本。

例如

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分钟后运行所有脚本

2 个答案:

答案 0 :(得分:2)

可能有更好的方式,但死的简单方法就是列出你希望它们运行的​​分钟数(其余的当然是*几小时,几天等):

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...

答案 1 :(得分:1)

每分钟调用一次包装脚本。 这个包装器脚本查看(分钟%3)并使用余数调用正确的脚本 在cron中只有一行:很好。

编辑:新想法 您可以通过引入丑陋的crontab行来跳过包装器 我会去包装(更干净的crontab,设置和导出变量的地方, 附加控制声明),但我认为你应该知道可能性 将测试文件x0,x1和x2放在/ tmp,chmod + x中,内容为

echo $(date) $0 >> /tmp/x.out

制作crontab行

* * * * * /tmp/x`echo "$(date '+\%M') \% 3" | bc`

等待5分钟(可能让我喝咖啡黑色?)并查看/tmp/x.out。
删除crontab条目和新的/ tmp / x *文件。