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

Har*_*ish 3 linux ubuntu cron

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

lik*_*hoa 6

不要使用 perl 甚至 php,只需使用内置的 BASH $RANDOM 除以 3600(等于一小时),如下所示。

0 * * * * sleep $((RANDOM%3600)) && /path/to/yourScript
Run Code Online (Sandbox Code Playgroud)

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


Mar*_*ell 5

您可以每小时运行一个作业,每小时运行一次,最多休眠 3,599 秒,然后执行您的脚本:

0 * * * * /path/to/perl -e 'sleep int rand 3600' && /path/to/yourScript
Run Code Online (Sandbox Code Playgroud)

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

0 * * * * /path/to/php -r 'sleep(rand(0,3599));' && /path/to/yourScript
Run Code Online (Sandbox Code Playgroud)

你可以找到路径Perl

which perl
Run Code Online (Sandbox Code Playgroud)

同样对于PHP

which php
Run Code Online (Sandbox Code Playgroud)