为 Linux 命令添加随机延迟

为 Linux 命令添加随机延迟

我在用函数在我们的服务器上执行并行命令。

有一天,我们遇到了一个问题,puppetvia的服务重启func导致我们所有的服务器puppetmaster同时受到影响。

我的问题:如何在一组服务器上执行完全相同的命令,同时在各个服务器上执行之前添加延迟?

例如:random_delay && service puppet restart

random_delay我对命令的一部分很感兴趣。

答案1

sleep $((RANDOM % MAXWAIT))其中 MAXWAIT 是所需的最大延迟(以秒为单位)。

答案2

sleep $((RANDOM))

RANDOM 返回一个介于 0 和 32767 之间的值如果您需要为睡眠设置下限和上限,则需要定义另外两个变量,如下所示:

MINWAIT=10
MAXWAIT=30
sleep $((MINWAIT+RANDOM % (MAXWAIT-MINWAIT)))

答案3

我非常喜欢 S19N 的创新但不太理想的解决方案。我只是说它不太理想,因为它仍然在很大程度上不确定事情何时真正发生。我更愿意能够保证事情何时发生,以及发生时会发生什么事情。

Puppet 编排实际上是难的问题。
“最佳实践”解决方案之一是使用集体它不仅允许您配置 puppet 在您的机器集群上的运行时间,还可以使用它来解决其他类似的编排问题。

答案4

0 */12 * * * root perl -e 'sleep int(rand(43200))' && service puppet restart

这将每 12 小时随机休眠 0 秒到 12 小时(43200 = 12 x 60 x 60)

相关内容