每30秒运行一次cron作业的最佳方法是什么?

时间:2012-11-26 18:19:40

标签: bash cron crontab cron-task

我想每隔30秒运行一次cron作业,但是cron不允许比一分钟更频繁地安排作业。

哪个是每30秒运行一次cron作业的最佳方式?

5 个答案:

答案 0 :(得分:3)

这是一种在避免滑动窗口问题的同时执行此操作的方法。创建两个脚本,主要脚本(此处为main.sh)和睡眠脚本(sleep30.sh):

main.sh:

#!/bin/bash
date >>/tmp/main.out

sleep30.sh:

#!/bin/bash
sleep 30
. $1

的crontab:

* * * * * /pathtoscripts/sleep30.sh /pathtoscripts/main.sh
* * * * * /pathtoscripts/main.sh

它不够优雅,但应该有用。

答案 1 :(得分:1)

您可以使用cron的最短时间间隔为1分钟。 您可以在bash脚本中进行睡眠,但这可能是您可以做的最好的

答案 2 :(得分:0)

简短的回答是,你不能在一分钟内安排cron工作。您可以使用sleep 30但会引入滑动窗口问题(任务现在在30秒+任务的运行时间间隔)。您可以将任务放在while true循环中,如果已经过了至少30秒,则让它检查每次迭代,如果是,则再次运行任务,如果不是sleep 1

答案 3 :(得分:0)

你可以升级到最新的FreeBSD测试版,它有一个特殊的新cron修饰符:@every_second。 将你的cronjob包裹在lockf中,睡30秒,运行作业,然后终止。这样你就可以每分钟运行两次。

答案 4 :(得分:0)

如果任务执行时间短并且可以忽略,您可以通过以下方式做到这一点:

0504