首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >cron守护进程有多精确?

cron守护进程有多精确?
EN

Server Fault用户
提问于 2015-09-09 06:20:28
回答 4查看 4.8K关注 0票数 25

cron作业调度器真的精确吗?

我的意思是,我需要一个脚本每晚运行最新的可能,但在第二天的00:00。

理想情况下,我会在23.59 (或晚上11:59 )运行一个cron作业,但是系统真的会精确吗?既然一秒钟是重要的,我是否应该将cron任务设置为23:58,以便有一段时间离开它?

EN

回答 4

Server Fault用户

发布于 2015-09-09 06:57:04

cron可以保证您的工作将在指定的时间内启动(取决于系统时钟的精度)。但是没有办法给你任何关于终止工作时间的保证。这将取决于许多因素:

  • 系统负载有多大
  • 这项工作是做什么的?
  • 由于硬件问题而导致的缓慢
  • 由于网络问题而导致的缓慢(假设工作依赖于网络)

我的建议是改变您的设计,使特定的完成时间不是一个要求。

票数 24
EN

Server Fault用户

发布于 2015-09-09 06:24:31

我想这取决于您的cron守护进程,但是文档和标准表明,如果指定分钟,作业将在指定的分钟内执行。

请参见:

  • crontab文档
  • 上的SUSv2 2和crontab文件格式

请注意,您的脚本将启动时,时钟滴答到正确的时间,但将完成一些时间后。

票数 15
EN

Server Fault用户

发布于 2015-09-09 15:28:10

通常,cron将在23:59:00开始,扫描所有crontab文件,过滤掉与23:59相关的文件,然后启动它们。扫描这个文件是非常快的,因为没有太多的文件,而且它们都只包含了几行。因此,通常情况下,cron作业从23:59:00或23:59:01开始(例如,向crontab添加数百万行)。如果系统完全超载,这也不会工作那么快。

而且,这显然是依赖于实现的。

如果您需要非常准确的启动时间,最好是创建一个程序,直到您想要的时候才能睡觉,然后运行(例如使用c++11)。但在一个非实时操作系统上,这也将是不准确的!另外,电脑的时钟不知道确切的时间!

在所有情况下,这只会确保程序在您想要的时间(或多或少)开始。在给定的时间内,无法保证程序成功结束,所以我强烈认为您应该根据这个要求进行一些更改。

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

https://serverfault.com/questions/721088

复制
相关文章

相似问题

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