cron 作业调度器真的精确吗?
我的意思是,我需要一个脚本来尽可能晚地每晚运行,但要在第二天 00:00 之前运行。
理想情况下,我会在 23.59(或晚上 11:59)运行 cron 作业,但系统真的会精确吗?既然一秒钟很重要,我应该将 cron 作业设置为 23:58 以让它离开一段时间吗?
kas*_*erd 24
cron 可以保证您的工作不会早于指定时间开始(取决于系统时钟的精度)。但是没有办法给你关于工作终止时间的任何保证。这将取决于很多因素:
我的建议是更改您的设计,以便不需要特定的完成时间。
Fal*_*mot 14
我想这取决于您的 cron 守护程序,但文档和标准表明,如果您指定分钟,则作业将在指定的分钟执行。
看:
请注意,您的脚本将在时钟计时到正确时间时启动,但会在一段时间后完成。
通常 cron 会在23:59:00开始,扫描你所有的 crontab 文件,过滤掉那些与23:59相关的文件,然后启动它们。扫描这些文件非常快,因为它们并不多,而且都只包含几行。所以通常,cronjobs 开始于23:59:00或23:59:01 有一些方法可以故意放慢这个过程。(例如,向 crontab 添加数百万行)。如果系统完全过载,这也不会那么快地工作。
此外,这显然取决于实现。
如果您需要非常精确的开始时间,最好创建一个程序,该程序在您想要的时间之前一直休眠,然后运行(例如使用c++11)。但是在非实时操作系统上,这也不准确!PC 的时钟也不知道确切的时间!
在所有情况下,这只能确保程序在(或多或少)您想要的时间启动。在给定时间之前无法保证程序成功结束,因此我坚信您应该对该要求进行一些更改。
| 归档时间: |
|
| 查看次数: |
3780 次 |
| 最近记录: |