cron作业调度器真的精确吗?
我的意思是,我需要一个脚本每晚运行最新的可能,但在第二天的00:00。
理想情况下,我会在23.59 (或晚上11:59 )运行一个cron作业,但是系统真的会精确吗?既然一秒钟是重要的,我是否应该将cron任务设置为23:58,以便有一段时间离开它?
发布于 2015-09-09 06:57:04
cron可以保证您的工作将在指定的时间内启动(取决于系统时钟的精度)。但是没有办法给你任何关于终止工作时间的保证。这将取决于许多因素:
我的建议是改变您的设计,使特定的完成时间不是一个要求。
发布于 2015-09-09 06:24:31
我想这取决于您的cron守护进程,但是文档和标准表明,如果指定分钟,作业将在指定的分钟内执行。
请参见:
请注意,您的脚本将启动时,时钟滴答到正确的时间,但将完成一些时间后。
发布于 2015-09-09 15:28:10
通常,cron将在23:59:00开始,扫描所有crontab文件,过滤掉与23:59相关的文件,然后启动它们。扫描这个文件是非常快的,因为没有太多的文件,而且它们都只包含了几行。因此,通常情况下,cron作业从23:59:00或23:59:01开始(例如,向crontab添加数百万行)。如果系统完全超载,这也不会工作那么快。
而且,这显然是依赖于实现的。
如果您需要非常准确的启动时间,最好是创建一个程序,直到您想要的时候才能睡觉,然后运行(例如使用c++11)。但在一个非实时操作系统上,这也将是不准确的!另外,电脑的时钟不知道确切的时间!
在所有情况下,这只会确保程序在您想要的时间(或多或少)开始。在给定的时间内,无法保证程序成功结束,所以我强烈认为您应该根据这个要求进行一些更改。
https://serverfault.com/questions/721088
复制相似问题