17

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

4

7 回答 7

43

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

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

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

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 脚本,它会执行并休眠所需的时间,直到停止。

于 2009-04-14T00:44:38.133 回答
25

使用在(人在)。让您的应用程序或启动脚本计算未来 72 分钟的启动时间,并安排自己在开始工作之前再次运行。

在 windows xp 和 vista 上也可用。

这是 gnu/linux 的示例: at -f command.sh now + 72 minutes

于 2009-04-14T00:36:54.860 回答
4

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

于 2009-04-14T00:45:45.277 回答
4

不要使用 cron...

#!/bin/sh
while [ true ] 
do
     sleep 4320
     echo "Put your program here" &
done
于 2009-04-23T23:49:59.680 回答
3

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

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

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

另一种选择是让一个单独的应用程序处理调度,并启动您的应用程序。

于 2009-04-14T00:35:26.347 回答
2

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

20 次迭代使一整天。

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

于 2009-04-14T00:42:10.620 回答
-6

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

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

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

于 2009-08-04T15:35:19.650 回答