【问题标题】:Running Bash Script at random time随机运行 Bash 脚本
【发布时间】:2021-03-16 04:10:05
【问题描述】:

我在多个子服务器中有 iperf.sh shell 脚本,每个子服务器在每个 " 1,14,28,42,50 * * * * " 上运行并 ping iperf 服务器以检查带宽,有没有办法随机化这个 cron 或设置一个睡眠和运行的 shell 脚本随机时间...?

[ 注意:我在使用这个经典的 cron 系统时面临的问题是所有子服务器都同时运行 iperf.sh 脚本,而我的主 Iperf 服务器的 cpu 利用率很高,这导致不正确平数据。 ]

提前致谢。

【问题讨论】:

  • 也许让他们在预定的时间开始他们在做实际工作之前随机睡觉?
  • 1,14,28,42,50 * * * * { /bin/sleep $((RANDOM%120)) ; /path/to/your/script ; } 可能会起作用。不确定cron shells 是否支持$(( $RANDOM )) 否则(如上)将 sleep cmd 放在脚本的顶部。祝你好运。

标签: linux bash shell scripting cron


【解决方案1】:

您可以在脚本开始时添加一个随机等待期(或者甚至在 crontab 本身中,如 cmets 中所建议的那样)。

我推荐 GNU shuf,它比 $RANDOM 更便携(因为并非所有 shell 都支持它,例如 dash 不会)。

sleep $(shuf -i5-20 -n1)

# Rest of script

您可以试验随机等待时间的范围(本例中为 5 到 20 秒)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-04
    • 2017-01-11
    • 2017-06-10
    • 1970-01-01
    • 1970-01-01
    • 2015-05-27
    相关资源
    最近更新 更多