我创建了每 5 小时运行一次的计划任务,并启用了“延迟任务最多(随机延迟)”选项 2 小时。我发现了一些问题,但在开始进行更改之前,我想更好地了解实际发生的情况与我的预期是否相符。
在过去的一周中,这项任务一直在运行,在几天的时间里,它每天运行 5 次。这不应该发生,对吧?我希望它每 5 小时运行一次。5 小时乘以 5 次,结果是 25 小时,对吧?这还不包括应该添加到 5 小时“基数”上的随机时间(最多 2 小时)。我预计这项任务每天运行 3 或 4 次。
任务计划程序列表中显示的下次运行时间从来都不正确。它显示的似乎是随机的开始时间,但任务从来都不会在那个时间运行。任务可能会比显示的时间更早或更晚运行。
有什么方法可以在任务实际启动之前获取真实启动时间吗?上次运行时间是正确的,但我想知道任务何时会再次运行以进行重启、修补等。
我对“基本”间隔和随机延迟的理解正确吗?任务应该在“基本”加上随机延迟过去后运行,对吗?例如,4 小时基本延迟加上 2 小时随机延迟不应该在一天内运行 6 次;它每天会触发 4 或 5 次,对吗?
答案1
您对随机延迟的理解是正确的,您可以在文档中找到更多详细信息:
指定的随机延迟时间是随机间隔的上限。触发器将在 randomDelay 参数指定的时间段内随机触发,直到触发器指定的开始时间才开始。例如,如果任务触发器设置为每七天触发一次,并且 randomDelay 参数设置为 P2DT5S(2 天,5 秒时间跨度),那么一旦达到第七天,触发器将在接下来的 2 天 5 秒内随机触发一次。
和MS-TSCH 3.2.5.4.2 SchRpcRegisterTask:
TimeTrigger 的 RandomDelay:服务器必须随机选择一个延迟值,并在时间触发器触发后延迟启动任务,延迟时间值为随机延迟值。随机延迟值必须从零到 RandomDelay 之间的区间中选择(含)。如果不存在,服务器不得延迟启动任务。
但是,配置为每 5 小时运行一次的计划任务可能会每天启动 5 次,例如:
基地开始时间:00:00+ 2 分钟 => 开始于 00:02
下一个:05:02 + 10 分钟 => 开始于 05:12
下一个:10:12 + 1 小时 => 开始于 11:12
下一个:16:12 + 2 小时 => 开始于 18:12
下一个:23:12 + 45 分钟 => 开始于 23:57
关于下次运行时间:不,由于存在随机延迟,您无法预测下次运行时间,因为随机值是在“启动”任务之前计算的(然后,如果随机值为 0,则任务将立即启动)。这没有记录,请将其视为实现细节:它可能会或可能不会在未来版本中发生变化。
答案2
5x5 是 25,对吧,但是……第一次运行时间为 0:00,第二次运行时间为 05:00,第三次运行时间为 10:00,第四次运行时间为 15:00,第五次运行时间为 20:00。这样一来,随机延迟时间就剩下 4 个小时了,随机延迟时间介于 0 分钟和 2 小时之间。到目前为止,这似乎完全正常。您不会期望任何一天都会启动 5 次,但在某些情况下,确实如此。