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

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

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

linux ubuntu cron
2个回答
8
投票

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

0 * * * * /bin/bash -c 'sleep $((RANDOM%3600))' && /path/to/yourScript

或者,使用 Perl:

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

6
投票

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

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

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

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