我的一些网站需要定期 crontab,我用它每 5 分钟启动一个 cronjob:
*/5 * * * *
crontab 小而轻,但是开始有几个站点需要它们,并且将它们全部启动,这开始不是一个好主意。
有了这个
*/5
,cron 从 5、10、15 20 等开始...是否可以使其从 8、13、18、23 等开始?
Vixie cron 接受一定范围内的步骤(感谢 Keith Thompson),所以你可以这样做
3-58/5 * * * * my_command
对于其他版本的 cron,可能不支持此功能,您只需这样做
3,8,13,18,23,28,33,38,43,48,53,58 * * * * my_command
另一种选择是类似的
*/5 * * * * sleep 3m ; my_command
这可以适应随机睡眠时间,从而进一步分散工作。例如,你可以这样做
*/5 * * * * /bin/bash -c 'sleep $((RANDOM/(32767/180))) ; my_command'
或者如果您可以使用
SHELL = /bin/bash
来运行 crontab
行之后的所有其他 cron 作业,则可以在 /bin/bash -c
中进一步使用 bash
来使 SHELL =
变得不必要。 $RANDOM
中的 bash
扩展为 0 到 32767 之间的随机整数,因此这会给您带来最多 180 秒的延迟。