我有一个计划的任务,configuration为在23小时后被杀死。 当我将任务导出到XML时,我可以validation此设置,因为我看到了这一行:
<ExecutionTimeLimit>PT23H</ExecutionTimeLimit>
然而,这个任务实际上是在20小时后被杀死的。
任务从每天下午6点开始。 查看任务历史logging,我看到TaskScheduler在第二天下午2:00:01终止了“由于超时已到”的任务。 当然,如果在那之前没有完成,它应该在下午5点终止。
我怎样才能使设置的改变真的生效?
我尝试将任务导出到XML,然后删除它,并从XML重新导入。 这不起作用,一方面,历史选项卡仍然显示(删除)任务的所有旧事件; 这就像它没有完全删除。
我也只是禁用了任务,并以另一个名字从XML重新导入。 20小时后,这项新任务也失败了。 将间隔设置为24小时(查看是否在21之后死亡)不起作用,20小时后仍然终止。 同样,将超时设置为等同的秒数(至23小时)也会在20小时后超时。
这是在Windows Server 2008 R2企业服务包1.这似乎是一个严重的错误。 不幸的是,在短期内升级到服务器2012不是一个选项。
这里是导出到XML的任务定义(是的,那些有趣的字符在开始的时候是原来的)。 在这种情况下,我将超时设置为1435分钟,并将其设置为23小时55分钟。
<?xml version="1.0" encoding="UTF-16"?> <Task version="1.2" xmlns="http://schemas.microsoft.com/windows/2004/02/mit/task"> <RegistrationInfo> <Date>2015-08-12T19:02:20.0562727</Date> <Author>MOSCATO2\Administrator</Author> </RegistrationInfo> <Triggers> <CalendarTrigger> <StartBoundary>2015-08-12T18:00:00</StartBoundary> <ExecutionTimeLimit>PT20H</ExecutionTimeLimit> <Enabled>true</Enabled> <ScheduleByWeek> <DaysOfWeek> <Sunday /> <Monday /> <Tuesday /> <Wednesday /> <Thursday /> <Saturday /> </DaysOfWeek> <WeeksInterval>1</WeeksInterval> </ScheduleByWeek> </CalendarTrigger> </Triggers> <Principals> <Principal id="Author"> <UserId>MOSCATO2\biocbuild</UserId> <LogonType>Password</LogonType> <RunLevel>LeastPrivilege</RunLevel> </Principal> </Principals> <Settings> <MultipleInstancesPolicy>IgnoreNew</MultipleInstancesPolicy> <DisallowStartIfOnBatteries>true</DisallowStartIfOnBatteries> <StopIfGoingOnBatteries>true</StopIfGoingOnBatteries> <AllowHardTerminate>true</AllowHardTerminate> <StartWhenAvailable>false</StartWhenAvailable> <RunOnlyIfNetworkAvailable>false</RunOnlyIfNetworkAvailable> <IdleSettings> <StopOnIdleEnd>true</StopOnIdleEnd> <RestartOnIdle>false</RestartOnIdle> </IdleSettings> <AllowStartOnDemand>true</AllowStartOnDemand> <Enabled>true</Enabled> <Hidden>false</Hidden> <RunOnlyIfIdle>false</RunOnlyIfIdle> <WakeToRun>false</WakeToRun> <ExecutionTimeLimit>PT23H55M</ExecutionTimeLimit> <Priority>7</Priority> </Settings> <Actions Context="Author"> <Exec> <Command>E:\biocbld\BBS\3.3\bioc\moscato2\run.bat</Command> <Arguments>>> e:\biocbld\bbs-3.3-bioc\log\MOSCATO2.log 2>&1</Arguments> <WorkingDirectory>E:\biocbld\BBS\3.3\bioc\moscato2</WorkingDirectory> </Exec> </Actions> </Task>
触发器ExecutionTimeLimit优先于Task ExecutionTimeLimit。
<ExecutionTimeLimit>PT20H</ExecutionTimeLimit>
如果两者都指定,任务时间限制传统上设置为较高(或相等)的值。
TBH,真的应该有某种可见的警告提醒你,如果一个任务是这样configuration的。
你有2个ExecutionTimeLimit
1的触发器设置为ExecutionTimeLimit-PT20H-ExecutionTimeLimit
1设置为ExecutionTimeLimit-PT23H55M-ExecutionTimeLimit
改变他们是相同的,它应该是确定的。