Answers:
我从未见过cron实现可以在随机时间运行作业的方法。这是一个奇怪的要求。如文档所述,9-12
是的快捷方式9,10,11,12
,表示每小时9到12。
如果要随机运行作业,请在间隔开始时运行作业,然后添加随机延迟。例如,要在9到12之间的随机时间运行:
SHELL=/bin/bash
0 9 * * * sleep $((3600 * (RANDOM % 4))); do_stuff
请注意,这RANDOM
需要bash或ksh,它在默认Shell中可能不可用。
如果要在9到12之间的任意时间以第二个分辨率运行,则可以将其RANDOM % 10800
用作延迟,但是因为RANDOM
它的范围是0..32767,所以延迟在0到32768之间会有偏差。10800 = 368.为避免这种偏见:
SHELL=/bin/bash
0 9 * * * max=$((32768/10800*10800)); while delay=$RANDOM; ((delay > max)); do :; done; sleep $((delay % 10800)); do_stuff
--randomwait
,yum的自--splay
变量或Chef-client的自变量),但对于没有此选项的应用程序,随机执行时间将是作业调度程序中的有用功能。