首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将cron设置为每天在任意时间运行一次

如何将cron设置为每天在任意时间运行一次
EN

Stack Overflow用户
提问于 2017-12-13 01:22:25
回答 4查看 2.1K关注 0票数 4

嗨,所以现在我有一个基本的cron,它每天在1点和6点运行我的程序两次。

代码语言:javascript
复制
H 1,18 * * *

问题是我有大约100件事情在这个时候启动,它阻塞了我的机器。我想每天随机生成一个运行每个作业的时间。如果5-7同时进行也没问题。所以我想我的问题是。首先,这可能吗?如果是这样的话,有没有一个最佳实践?我将所有内容加载到groovy中,所以我只是想生成一个介于1-24之间的数字,并将其添加到下面:

代码语言:javascript
复制
cron('H 1,18 * * *')

如果可能的话。但我觉得这仍然会阻碍我,因为我有太多的事情要做。

EN

回答 4

Stack Overflow用户

发布于 2017-12-13 03:01:28

我选择了这个:

代码语言:javascript
复制
H H(0-7) * * *

这似乎给了我一个在12点到7点之间的随机时间,这对我来说是好的。你也可以这样做:

代码语言:javascript
复制
    def rand = Math.abs(new Random().nextInt() % 24) + 1;
    triggers {
        githubPush()
        cron('H ' + rand + ' * * *')
    }

但看起来是额外的,因为我所做的工作。

票数 4
EN

Stack Overflow用户

发布于 2017-12-13 01:27:32

嗯,据我所知,没有语法可以做到这一点(尽管你可以在bash中创建一些is,比如每晚自动重新生成crontab)。但是为什么呢??你不需要每天根据你的描述随机生成时间。您需要将其随机化一次,并将这些随机时间写入您的crontab。

所以,掷一些骰子,或者使用一些基本的rnd数字生成器。或者,更好的是,均匀地分配它们--比如每小时你在你的contab中启动几个进程。为什么你需要更详细的东西呢?不管怎么说,这是怎么做的..

票数 1
EN

Stack Overflow用户

发布于 2017-12-13 01:40:56

我不知道你是否真的能用cron做到这一点,但是如果你能访问systemd Timers and services (至少在几年前的现代Linuxes中就可以使用它们),你也许能够临时搭建一个基于计时器的系统。

抛出一个随机休眠并返回0的小shell脚本,或者只是使用计时器来延迟启动过程中的内容。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47778209

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档