【发布时间】:2016-09-29 06:00:12
【问题描述】:
我希望 cronjob 每隔一小时随机运行一次。 (即如果第一个作业在 58 分钟运行,第二个作业应该在 47 分钟运行,第三个在 52 分钟运行,依此类推)但这应该在每个小时内随机运行。有没有办法做到这一点?
【问题讨论】:
-
Cron 本身无法做到这一点。您将不得不求助于解决方法。您可以每分钟运行一个脚本并随机决定它是否应该运行。将每天已经运行的小时数列表保存在一个文件中,并且仅在当前小时数不存在时才运行。
-
或者从 cron 每小时运行一个脚本,然后在执行任何操作之前等待小于 60 分钟的随机分钟数。或者,从 cron 每小时运行一次,但在 cron 内部,在运行脚本之前随机睡眠不到 60 分钟。
-
所以
0 * * * * perl -e 'sleep int rand 3600' && yourScript可能。 -
我能知道 perl -e 在这里做什么吗?
-
perl -e '...'将单引号中的代码作为 Perl 程序执行。该程序会随机休眠少于 3,600 秒的秒数。当该程序完成休眠时,将调用您的脚本。