我如何让 cron 作业每 72 分钟运行一次?或者一些不那么漂亮的数字?
7 回答
由于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 脚本,它会执行并休眠所需的时间,直到停止。
使用在(人在)。让您的应用程序或启动脚本计算未来 72 分钟的启动时间,并安排自己在开始工作之前再次运行。
在 windows xp 和 vista 上也可用。
这是 gnu/linux 的示例: at -f command.sh now + 72 minutes
您总是可以采取每分钟触发 cron 的方法,如果脚本在 72 分钟前运行,则立即退出。
不要使用 cron...
#!/bin/sh
while [ true ]
do
sleep 4320
echo "Put your program here" &
done
您不能直接从 cron/crontab 执行此操作。
Cron 作业按特定计划运行,而不是按特定时间间隔运行。
一种替代方法是制定一个近似于“每 72 分钟”的时间表,方法是在午夜、1:12、2:24、3:36 ...... 您的 crontab 文件可以将所有这些时间指定为执行时间。
另一种选择是让一个单独的应用程序处理调度,并启动您的应用程序。
您需要为此设置正好 20 个任务 - 即在 00:00 设置一个,在 01:12 设置下一个,在 02:24 设置下一个,等等。
20 次迭代使一整天。
不幸的是,这是唯一的方法,因为 cron 任务是预先设置在一个固定的时间表中,而不是运行,比如“在 X 分钟后执行最后一个任务”。
嗯,我知道这早就应该了,但我正在查看一些日程安排问题并看到了这个问题。
只需在您的 crontab 中执行此操作
*/72 * * * * /home/script.sh