我有我想每小时运行的工作,但不一定同时运行,我认为
0 * * * * job
Run Code Online (Sandbox Code Playgroud)
表示在点上每小时的 0 分钟运行。
我知道我也可以使用
@hourly job
Run Code Online (Sandbox Code Playgroud)
如果有的话有什么区别?我如何安排作业每小时运行,但不是同时运行?
Ste*_*itt 13
来自crontab(5)
:
@hourly
: 每小时运行一次,即。"0 * * * *"
.
所以它是完全一样的。
要在一小时内的不同时间点运行作业(或多个作业,以分散负载),您可以在开始作业前随机休眠一段时间:
@hourly sleep $((RANDOM / 10)); dowhatever
Run Code Online (Sandbox Code Playgroud)
这最多休眠 3276 秒(将近一个小时),然后运行作业。所以每次cron
开始工作时,它在实际开始之前等待的时间不同。
@hourly
是0 * * * *
in 的同义词,crontab
没有区别。@hourly
是 的特殊字符串表示0 * * * *
。
来自man 5 crontab
:
string meaning
------ -------
@hourly Run once an hour, "0 * * * *".
Run Code Online (Sandbox Code Playgroud)
请注意,cron
我所拥有的 Vixie Cron总共支持 8 个特殊字符串。