每隔一小时随机运行一个cron作业

时间:2016-05-31 09:35:24

标签: linux ubuntu cron

我希望随机每小时运行一次cronjob。 (即如果第一个作业在58分钟运行,第二个作业应该在47分钟运行,第三个作业在52分钟运行,依此类推)但这应该随机运行每个小时。有没有办法做到这一点?

2 个答案:

答案 0 :(得分:2)

你可以每小时,每小时运行一个工作,最多可以睡3,599秒,然后执行你的脚本:

0 * * * * /path/to/perl -e 'sleep int rand 3600' && /path/to/yourScript

或者,如果您愿意PHP使用Perl

0 * * * * /path/to/php -r 'sleep(rand(0,3599));' && /path/to/yourScript

您可以找到Perl的路径:

which perl

同样适用于PHP

which php

答案 1 :(得分:2)

不要使用perl甚至php,只需使用内置的BASH $ RANDOM除以3600,等于一小时,就像这样。

0 * * * * sleep $((RANDOM%3600)) && /path/to/yourScript

请记住,您可能会遇到一些竞争条件,脚本会随机播放近一个小时,具体取决于脚本执行所需的时间。