首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >多个@每日crontab条目是否按顺序依次处理?

多个@每日crontab条目是否按顺序依次处理?
EN

Unix & Linux用户
提问于 2011-12-05 12:28:24
回答 3查看 31.7K关注 0票数 26

我希望每天都有两个作业按我指定的顺序连续运行。这个crontab能可靠地做我想做的事吗?

代码语言:javascript
运行
AI代码解释
复制
@daily job1
@daily job2

我假设他们会一个接一个地运行,但我无法通过搜索网络或从这些手册中的任何一个找到答案:cron(1)crontab(1)crontab(5)

上面的crontab显然不会做我想做的事情,如果cron以并行或不可预测的顺序运行@daily调度的事情。

我知道我可以简单地制作一个shell脚本来按顺序启动它们,我只是好奇cron应该如何工作(而且我太懒了,不愿意收集测试数据或阅读源代码)。

Cron由cron包提供。操作系统是Ubuntu10.04LTS(服务器)。

EN

回答 3

Unix & Linux用户

回答已采纳

发布于 2011-12-05 16:46:37

在快速浏览源代码(我认为是相同版本的Debian挤压版)之后,它确实看起来就像给定文件中的条目,而且执行的时间也是一样的。为此目的,@daily0 0 * * *是相同的(实际上,@daily与这个cron中的0 0 * * *是相同的)。

我不会一刀切地依赖这个。有一天,可能有人会决定cron应该并行运行作业,以利用这些32核CPU,其中有31个内核处于空闲状态。在实现cron源代码中遇到的这个已有20年历史的todo项时,可能会这样做:

所有这些都应该有标记和负载限制;也就是说,不是@时表示"0 ** *“,而是”接近每小时的前端,而不是“直到系统负载降低”(…) (vix,…)。

在这里写@daily job1; job2很容易。如果作业按照顺序执行是很重要的,那么就让它成为您所写内容的直接结果。

此外,使订单显式消除了未来的管理员会重新排序行的风险,认为这并不重要。

票数 33
EN

Unix & Linux用户

发布于 2011-12-05 15:55:34

http://ss64.com/osx/crontab.html (以及其他参考资料)说@ says相当于

代码语言:javascript
运行
AI代码解释
复制
0 0 * * *

上面写着午夜要跑。我预计这两条线路都会在午夜附近发射,但无法保证哪条线路会先发射。我同意in 013‘S在他的评论中的建议:

它被指定不足的事实通常意味着它是由实现决定的,通常最好不要依赖于这种行为。在自己的脚本中放置序列重要的作业序列,而不是作为单独的crontab条目,这样做可能更干净、更有组织。

票数 5
EN

Unix & Linux用户

发布于 2011-12-05 18:01:50

@Giles在导入时使用单个脚本按顺序运行是合适的。

cron.daily文件不指定运行时间。这是我的经验,他们确实运行的顺序。这是合理的,因为许多后台作业可能运行在笔记本电脑或其他系统上。

指定时间时,将运行当前分钟计划的所有作业。使用不同的时间是个好主意。

如果您的作业是互斥的,则通常使用锁文件来确定其他作业是否正在运行。

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

https://unix.stackexchange.com/questions/26133

复制
相关文章

相似问题

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