Crontab 每 5 分钟执行一次,但不在 5、10、15 等

问题描述 投票:0回答:1

我的一些网站需要定期 crontab,我用它每 5 分钟启动一个 cronjob:

*/5 * * * *

crontab 小而轻,但是开始有几个站点需要它们,并且将它们全部启动,这开始不是一个好主意。

有了这个

*/5
,cron 从 5、10、15 20 等开始...是否可以使其从 8、13、18、23 等开始?

cron
1个回答
4
投票

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 秒的延迟。

© www.soinside.com 2019 - 2024. All rights reserved.