![为 Linux 命令添加随机延迟](https://linux22.com/image/571952/%E4%B8%BA%20Linux%20%E5%91%BD%E4%BB%A4%E6%B7%BB%E5%8A%A0%E9%9A%8F%E6%9C%BA%E5%BB%B6%E8%BF%9F.png)
我在用函数在我们的服务器上执行并行命令。
有一天,我们遇到了一个问题,puppet
via的服务重启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)