如何每 72 分钟执行一次 cron 任务

Posted

技术标签:

【中文标题】如何每 72 分钟执行一次 cron 任务【英文标题】:How to do a cron job every 72 minutes 【发布时间】:2010-10-19 06:08:23 【问题描述】:

如何让 cron 作业每 72 分钟运行一次?还是一些不那么漂亮的数字?

【问题讨论】:

为什么必须是 72 分钟? 不一定是,只是不是很好的偶数。 【参考方案1】:

由于cron 基于时间而不是基于间隔运行作业,因此没有简单得令人眼花缭乱的方法。但是,虽然有点小技巧,但您可以在crontab 中设置多行,直到找到共同点。由于您希望作业每 72 分钟运行一次,因此它必须在以下时间执行:

00:00 01:12 02:24 03:36 04:48 06:00 07:12 ...

如您所见,该模式每 6 小时重复一次,有 5 个作业。因此,您的crontab 中将有 5 行:

0 0,6,12,18 * * * 命令 12 1,7,13,19 * * * 命令 24 2,8,14,20 * * * 命令 36 3,9,15,21 * * * 命令 48 4,10,16,22 * * * 命令

当然,另一种选择是创建一个包装守护程序或 shell 脚本,它会执行并休眠所需的时间,直到停止。

【讨论】:

【参考方案2】:

在(人在)使用。让您的应用或启动脚本计算 72 分钟后的启动时间,并安排自己在开始工作之前再次运行。 在 windows xp 和 vista 上也可用。 这是 gnu/linux 的示例:在 -f command.sh now + 72 分钟

【讨论】:

s/安排它/安排自己再次运行/ 希望这成为公认的答案。一旦你开始工作,它可以在每次运行时重新安排自己。但是,您可能会发现自己不同步;因此,请确保将您的工作重新安排为脚本中的第一件事,而不是最后一个。【参考方案3】:

您总是可以采取每分钟触发一次 cron 的方法,如果您的脚本在 72 分钟前运行,则立即退出。

【讨论】:

【参考方案4】:

不要使用 cron...

#!/bin/sh
while [ true ] 
do
     sleep 4320
     echo "Put your program here" &
done

【讨论】:

小心如果程序崩溃,您需要重新启动它。此外,机器重启后,程序将无法运行,您必须启动它。 是的,最好让它成为一个守护进程并使用 monit 例如让它保持运行。【参考方案5】:

您不能直接从 cron/crontab 执行此操作。

Cron 作业按特定计划运行,而不是按特定时间间隔运行。

另一种方法是制定一个近似于“每 72 分钟”的时间表,方法是在午夜、1:12、2:24、3:36 ......午夜。您的 crontab 文件可以将所有这些时间指定为执行时间。

另一种选择是让单独的应用程序处理调度,然后触发您的应用程序。

【讨论】:

【参考方案6】:

您需要为此设置正好 20 个任务 - 即在 00:00 设置一个,在 01:12 设置下一个,在 02:24 设置下一个,等等。

20 次迭代构成一整天。

不幸的是,这是唯一的方法,因为 cron 任务是事先按固定时间表设置的,而不是运行,例如“在 X 分钟后执行最后一个任务”。

【讨论】:

【参考方案7】:

嗯,我知道这早就该了,但我正在查看一些日程安排问题并看到了这个问题。

只需在您的 crontab 中执行此操作

*/72 * * * * /home/script.sh

【讨论】:

这行不通,分钟为 0-59,超过 30 分钟的任何内容都将在 x 过去发布,即 34 将在过去 34 分钟发布,而不是每 34 分钟发布一次。 我刚刚对此进行了测试,在 CentOS 7 下 */72 * * * * date >> cron-over-72.out 的结果是该作业每小时运行一次,每小时运行一次。

以上是关于如何每 72 分钟执行一次 cron 任务的主要内容,如果未能解决你的问题,请参考以下文章

cron表达式怎么实现“00:15-23:57每5分钟运行一次”?

定时任务Cron表达式

cron和crontab命令详解 crontab 每分钟每小时每天每周每月每年定时执行 crontab每5分钟执行一次

无法使用cron每分钟执行一次python 3脚本

Google App Engine 中的 cron.yaml:如何在特定分钟每小时安排一次任务?

Ubuntu cron 定时执行任务