克朗德抵消五分钟的时间表

是否可以抵消每5分钟运行一个cron脚本?

我有两个脚本,脚本1从一个数据库中收集一些数据并将其插入到另一个数据库中,脚本2将这些数据和许多其他数据抽出,并从中创build一些漂亮的报告。 两个脚本都需要每5分钟运行一次。 我想将脚本2偏移一分钟,以便它可以从新数据创build一个报告。 EG我想脚本一运行:00, :05, :10, :15 [...]和脚本二运行在:01, :06, :11, :16 [...]每小时。 脚本不相互依赖,无论脚本是否成功,脚本2都必须运行。 但是,如果报告能够提供最新的数据,这将是有用的。 这与cron可能吗?

post;
我曾经想过在shell脚本中使用这两个命令,所以他们之间立即运行,但这是行不通的,有时脚本1可能挂起来等待外部的API等,可能需要长达15分钟的运行,但脚本2必须每5分钟运行一次,这样做会停止/延迟脚本2的执行。如果我可以在Cron中设置,这意味着无论脚本1在做什么,脚本2都会运行

你可以运行脚本,只要你想使用cron 。 如果您想每5分钟运行脚本1,则可以这样开始:

 */5 * * * * /path/to/script1 

但是这实际上只是简写:

 0,5,10,15,20,25,30,35,40,45,50,55 * * * * /path/to/script1 

如果您想在脚本1后一分钟运行脚本2,可以这样做:

 1,6,11,16,21,26,31,36,41,46,51,56 * * * * /path/to/script2 

你也可以这样做:

 */5 * * * * /path/to/script1 */5 * * * * /path/to/script2 

然后在剧本2开始时,睡一分钟:

 sleep 60 

crontab的分钟input字段接受一个“增量”运算符,这是有点令人困惑,因为它看起来应该是一个math的“除以”运算符,但不是。 你会经常看到它使用类似于以下内容。 请注意,这并不能find可以被五整除的数字,而是从一组中的每五个项目:

  */5 * * * * command 

这告诉cron匹配从0-59( * )分钟的集合中的每第五个项目( /5 ),但是你可以像这样改变集合:

  1-59/5 * * * * command 

这将需要从第1-59集中的每五个项目,分钟6,11,16等运行您的命令。

如果你需要比一分钟更多的细粒度偏移量,你可以使用睡眠命令作为你的crontab的一部分来破解它:

  */5 * * * * sleep 15 && command 

这会每五分钟运行一次你的工作,但是这个命令在一分钟之后才会真正开始。 对于短时间运行的工作,在几秒钟之后,其他事情就会有所不同,但是你不想迟到一整分钟,这是一个简单的黑客攻击。

您可以使用+符号指示时间偏移。 例如,要运行在:01, :06, :11, :16 [...] ,创build一个任务,如

 */5+1 * * * * command