如何每72分钟运行一次cron作业?或者有些不那么漂亮?
答案 0 :(得分:36)
由于cron
基于时间而不是基于时间间隔运行作业,因此没有简单明了的方法。但是,虽然它有点像黑客,但您可以在crontab
中设置多行,直到找到共同点。由于您希望每72分钟运行一次作业,因此必须在以下时间执行:
如您所见,该模式每6个小时重复5个工作。因此,您的crontab
中将有5行:
0 0,6,12,18 * * * command 12 1,7,13,19 * * * command 24 2,8,14,20 * * * command 36 3,9,15,21 * * * command 48 4,10,16,22 * * * command
另一个选择当然是创建一个包装守护程序或shell脚本,它执行并休眠所需的时间直到停止。
答案 1 :(得分:25)
使用at(man at)。让您的应用程序或启动脚本在将来72分钟计算启动时间,并安排自己在开始工作之前再次运行
在Windows XP和Vista上也可用。
这是gnu / linux的一个例子:at -f command.sh现在+ 72分钟
答案 2 :(得分:4)
你总是可以采取每分钟触发cron的方法,并且如果它的运行时间超过72分钟,你的脚本会立即退出。
答案 3 :(得分:3)
您不能直接从cron / crontab执行此操作。
Cron作业按特定时间表运行,而不是按特定时间间隔运行。
另一种选择是通过在午夜,1:12,2:24,3:36,...运行,制定一个近似于“每72分钟”的时间表,并将其拉伸至近似于午夜。您的crontab文件可以指定所有这些时间来执行。
另一种选择是让一个单独的应用程序处理调度,并激活你的应用程序。
答案 4 :(得分:2)
你需要为此设置20个任务 - 即在00:00设置一个,在01:12设置下一个,在02:24设置下一个等等。
20次迭代需要一整天。
不幸的是,这是唯一的方法,因为cron任务是事先在固定的时间表中设置而不是运行,比如“在X分钟后执行最后一个任务”。
答案 5 :(得分:2)
不要使用cron ......
#!/bin/sh
while [ true ]
do
sleep 4320
echo "Put your program here" &
done
答案 6 :(得分:-3)
呃我知道这是姗姗来迟的,但我正在研究一些调度问题并看到了这个问题。
只需在你的crontab中执行此操作
* / 72 * * * * /home/script.sh