我设置了一个cronjob,每5分钟调用一次myscript.sh,然后在30秒到3秒之间调用一个php文件,我不明白为什么平均Interval是05:09。
我想每4-8分钟拨打一次cron2_.php,但没有机会实现这一目标。
坦克你。
Cron Job:*/5 * * * * myscript.sh
Shell脚本:
#!/bin/sh
# Grab a random value between 60-180 or ( between 30sec and 3 minutes )
value=$RANDOM
while [ $value -gt 180 ] || [ $value -lt 30 ] ;
do
value=$RANDOM
done
# Sleep for that time.
sleep $value
# Exectue Cron.
echo "Exectued on:$(date)" >> public_html/log_file.txt
exec php -f public_html/cron2_.php
以下是2小时的执行时间: 平均间隔 - > 05:09
Execution Time Interval Min:Sec
13:02:52 00:00
13:07:06 04:14
13:11:35 04:29
13:17:34 05:59
13:21:55 04:21
13:26:54 04:59
13:32:00 05:06
13:35:50 03:50
13:42:44 06:54
13:47:03 04:19
13:51:26 04:23
13:56:48 05:22
14:01:53 05:05
14:07:42 05:49
14:12:15 04:33
14:16:22 04:07
14:23:01 06:39
14:27:17 04:16
14:32:21 05:04
14:35:57 03:36
14:42:14 06:17
14:45:44 03:30
14:52:52 07:08
14:56:50 03:58
15:02:57 06:07
15:06:43 03:46
15:12:26 05:43
15:16:29 04:03
15:22:00 05:31
15:25:35 03:35
15:31:51 06:16
15:37:51 06:00
15:42:56 05:05
15:47:32 04:36
15:50:36 03:04
15:55:45 05:09
16:02:15 06:30
16:06:10 03:55
16:11:11 05:01
16:15:56 04:45
16:21:58 06:02
16:25:56 03:58
16:31:09 05:13
16:37:06 05:57
16:42:30 05:24
16:45:36 03:06
答案 0 :(得分:3)
您希望脚本每4到8分钟运行一次。让我们说平均每6分钟就要执行一次。在这种情况下,将crontab行设置为:
*/6 * * * * myscript.sh
接下来,在您的脚本中,将随机延迟设置为0到2分钟:
sleep $(($RANDOM % 120))
考虑两种极端情况。首先,假设一个作业等待最多2分钟,而下一个等待最少0分钟。他们执行的时间是4分钟。对于第二种情况,请考虑相反的情况:第一个作业等待最少0分钟,第二个作业等待最多2分钟。在这种情况下,执行时间为8分钟。因此,这种方法可以等待4到8分钟,平均等待时间为6分钟。