如何每 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 分钟运行一次,因此它必须在以下时间执行:
如您所见,该模式每 6 小时重复一次,有 5 个作业。因此,您的crontab
中将有 5 行:
当然,另一种选择是创建一个包装守护程序或 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和crontab命令详解 crontab 每分钟每小时每天每周每月每年定时执行 crontab每5分钟执行一次