为 Linux 命令添加随机延迟

Bel*_*dez 15 linux command-line-interface puppet

我正在使用func在我们的服务器上执行并行命令。

前几天,我们遇到了一个问题,即puppetvia的服务重新启动func使我们的所有服务器同时命中我们的服务器puppetmaster

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

例如: random_delay && service puppet restart

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

S19*_*19N 32

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

  • 这似乎取决于 bash 特定的扩展。在 `dash` 中,`echo sleep $((RANDOM % 900))` 返回 `sleep 0`。这意味着在 `#!/bin/sh` 脚本或 crontab 之类的地方使用它是不安全的。(问题似乎是“dash”不理解“$RANDOM”) (3认同)
  • @CoreyS。$RANDOM 正在播种最后一个值,因此循环(我卡在了 5/6/7、2/7 和 5)。`sleep $((RANDOM % MAXWAIT))` 是正确的方法。我会像这样编辑答案。 (2认同)

小智 5

sleep $((RANDOM))\n
Run Code Online (Sandbox Code Playgroud)\n

RANDOM xc2\xa0 将返回 0 到 32767 之间的值\n如果您需要设置睡眠的下限和上限,您需要定义其他两个变量,如下所示:

\n
MINWAIT=10\nMAXWAIT=30\nsleep $((MINWAIT+RANDOM % (MAXWAIT-MINWAIT)))\n
Run Code Online (Sandbox Code Playgroud)\n

  • 当 `MINWAIT=10` 和 `MAXWAIT=11` (只有 1 个单位)时,命令 `echo $((MINWAIT+RANDOM % (MAXWAIT-MINWAIT)))` 将始终显示 `10` (id.`$MINWAIT `)。 (2认同)