嗨,所以现在我有一个基本的cron,它每天在1点和6点运行我的程序两次。
H 1,18 * * *问题是我有大约100件事情在这个时候启动,它阻塞了我的机器。我想每天随机生成一个运行每个作业的时间。如果5-7同时进行也没问题。所以我想我的问题是。首先,这可能吗?如果是这样的话,有没有一个最佳实践?我将所有内容加载到groovy中,所以我只是想生成一个介于1-24之间的数字,并将其添加到下面:
cron('H 1,18 * * *')如果可能的话。但我觉得这仍然会阻碍我,因为我有太多的事情要做。
发布于 2017-12-13 03:01:28
我选择了这个:
H H(0-7) * * *这似乎给了我一个在12点到7点之间的随机时间,这对我来说是好的。你也可以这样做:
def rand = Math.abs(new Random().nextInt() % 24) + 1;
triggers {
githubPush()
cron('H ' + rand + ' * * *')
}但看起来是额外的,因为我所做的工作。
发布于 2017-12-13 01:27:32
嗯,据我所知,没有语法可以做到这一点(尽管你可以在bash中创建一些is,比如每晚自动重新生成crontab)。但是为什么呢??你不需要每天根据你的描述随机生成时间。您需要将其随机化一次,并将这些随机时间写入您的crontab。
所以,掷一些骰子,或者使用一些基本的rnd数字生成器。或者,更好的是,均匀地分配它们--比如每小时你在你的contab中启动几个进程。为什么你需要更详细的东西呢?不管怎么说,这是怎么做的..
发布于 2017-12-13 01:40:56
我不知道你是否真的能用cron做到这一点,但是如果你能访问systemd Timers and services (至少在几年前的现代Linuxes中就可以使用它们),你也许能够临时搭建一个基于计时器的系统。
抛出一个随机休眠并返回0的小shell脚本,或者只是使用计时器来延迟启动过程中的内容。
https://stackoverflow.com/questions/47778209
复制相似问题