【问题标题】:Crontab, execute a task a random number of times within a period of timecrontab,在一段时间内随机执行一个任务的次数
【发布时间】:2019-04-12 00:25:25
【问题描述】:

我想使用 cron 在上午 8 点到下午 6 点之间每 3 分 30 秒随机运行一次任务。他们可以帮助我解决这个问题。我一直在寻找,但我没有设法做到这一点。非常感谢您。

【问题讨论】:

    标签: cron


    【解决方案1】:

    我会以两种方式解决这个问题 - 取决于要求:

    • 如果您的意思是任务可以随机执行或不随机执行,在上午 8 点到下午 6 点之间每隔 3 分 30 秒,您可以添加一些随机数生成并在符合特定条件时执行(数字大于 x 或可被 y 整除)等)
    • 如果您的意思是在上午 8 点到下午 6 点之间每 3 分 30 秒发生一次触发器,任务应该随机执行 N 次,您可以使用随机数来指定执行次数,然后循环直到达到该次数处决。

    至于 cron,您可能会发现 this page 对组装它很有用 :)

    编辑

    这里是评论的后续,用例指的是我上面提到的第二个:

    脚本

    random_times=$(( ( RANDOM % 10 )  + 1 ))
    for i in `seq 1 $random_times`; do bash /path/to/script.sh; done
    

    crontab

    */3 * * * *
    

    请注意,如果使用 unix crontab,您没有秒粒度,因此将每 3 分钟执行一次。

    【讨论】:

    • 正如您在第 2 点中描述的那样,您能帮我实现它吗?我在bash方面没有太多技能
    • 在编辑后的答案之上 - 如果您发现它解决了问题,请接受 :)
    • 谢谢,我现在就去试试,如果它确实有效,我会把你标记为“解决方案”..指的是秒的使用,我正在阅读,我找到了以下解决方案:*/3 08-18 * * * sleep 30; command
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-25
    相关资源
    最近更新 更多