任务计划程序两次运行任务


10

更新:现在已经连续两天发生了。

更新:现在包括计划任务和图像的XML。

位于伦敦的两台服务器(均为Windows 2012)的计划任务设置为在周一至周五的下午3点运行。在过去的5个月中已成功设置了此设置。

但是,在8月28日星期一,他们俩都在下午3点运行计划的任务,然后在下午4点再次运行。当它第一次被报道时,我认为那不是时钟刚回到一个小时后的第二天。但是,我无法解释它发生的原因以及它是否与时钟变化有关。

一台服务器的相关日志(另一台服务器的日志也遵循此模式):

事件129 15:00:20 Task Scheduler启动任务“ \ 3pm”,实例“ C:\ Program Files(x86)\ PHP \ v5.4 \ php.exe”,进程ID为2388。

事件100 15:00:20任务计划程序为用户“ x \ y”启动了“ \ 3pm”任务的“ {75a3590f-dec1-4dee-bd27-73d63a50a9d7}”实例。

事件200 15:00:20任务计划程序在任务“ \”的实例“ {75a3590f-dec1-4dee-bd27-73d63a50a9d7}”中启动了操作“ C:\ Program Files(x86)\ PHP \ v5.4 \ php.exe” 3pm”。

事件201 15:00:23 Task Scheduler成功完成了任务“ \ 3pm”,实例“ {75a3590f-dec1-4dee-bd27-73d63a50a9d7}”,操作“ C:\ Program Files(x86)\ PHP \ v5.4 \ php .exe”,返回码为0。

事件129 16:00:20 Task Scheduler启动任务“ \ 3pm”,实例“ C:\ Program Files(x86)\ PHP \ v5.4 \ php.exe”,进程ID为1224。

事件100 16:00:20任务计划程序为用户“ x \ y”启动了“ \ 3pm”任务的“ {3dd46ca9-c525-4796-86b5-5e513fd45f26}”实例。

事件200 16:00:20 Task Scheduler在任务“ \”的实例“ {3dd46ca9-c525-4796-86b5-5e513fd45f26}”中启动了动作“ C:\ Program Files(x86)\ PHP \ v5.4 \ php.exe” 3pm”。

事件201 16:00:23 Task Scheduler成功完成了任务“ \ 3pm”,实例“ {3dd46ca9-c525-4796-86b5-5e513fd45f26}”,操作“ C:\ Program Files(x86)\ PHP \ v5.4 \ php .exe”,返回码为0。

我已经看到此问题不定期运行两次,这表明原因是http://support.microsoft.com/kb/2461249上的错误。但是,这不包含Server 2012。

我正在努力解释这一点,还有其他人可以吗?

计划任务的XML导出为:

<?xml version="1.0" encoding="UTF-16"?>
<Task version="1.2" xmlns="http://schemas.microsoft.com/windows/2004/02/mit/task">
  <RegistrationInfo>
    <Date>2013-04-16T14:04:17.4897806</Date>
    <Author>x\y</Author>
  </RegistrationInfo>
  <Triggers>
    <CalendarTrigger>
      <StartBoundary>2013-04-17T15:00:20</StartBoundary>
      <Enabled>true</Enabled>
      <ScheduleByWeek>
        <DaysOfWeek>
          <Monday />
          <Tuesday />
          <Wednesday />
          <Thursday />
          <Friday />
        </DaysOfWeek>
        <WeeksInterval>1</WeeksInterval>
      </ScheduleByWeek>
    </CalendarTrigger>
  </Triggers>
  <Principals>
    <Principal id="Author">
      <UserId>x\y</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>P3D</ExecutionTimeLimit>
    <Priority>7</Priority>
  </Settings>
  <Actions Context="Author">
    <Exec>
      <Command>"C:\Program Files (x86)\PHP\v5.4\php.exe"</Command>
      <Arguments>-f "c:\a.php"</Arguments>
    </Exec>
  </Actions>
</Task>

计划任务的触发配置 计划任务的历史记录

10月29日17:00-更新-两台服务器都分别在15:00和16:00运行了计划的任务。我现在已经更新了调度程序运行的php文件,在我尝试解决此问题时,它实际上并未执行任何操作。我打算重新启动一台服务器,以查看明天是否有任何变化。

10月30日08:25-更新-导出任务XML时,我记得我没有包括第二个服务器上的计划任务是通过导入在第一个服务器上创建的任务的XML创建的。这两个任务之间的唯一区别是它们正在执行的php文件的路径以及它们作为其运行的用户帐户。

10月30日16:30-更新-已重新启动的服务器不再显示此行为,计划任务在其上运行了一次。我将等待几天,然后再重新启动第二台服务器,以防有人对诊断原因/发生方式有任何想法

11月6日18:00-更新-我们将所有更新应用到第二台服务器并重新启动。我们以为这可以解决问题,但是下午3点再次运行两次-下午3点再次运行,然后在下午4点再次运行。我看了其他预定的工作,他们只跑了一次。


如果不是第二天,则由于时间的变化是不太可能的,并且日志中的时间反映的是准确的时间(这意味着如果是时间问题,您会看到它运行两次,但都在下午3点运行,而不是每次运行一次)。不过,老实说,如果只是在八月才发生一次,我倾向于说“ bug /异常/幽灵”并继续前进。但是也许其他人可以在这里为您
带来启发

10月29日17:00-更新-两台服务器都分别在15:00和16:00运行了计划的任务。我现在已经更新了由调度程序运行的php文件,在尝试解决此问题时,它实际上并未执行任何操作。我打算重新启动一台服务器,以查看明天是否有任何变化。
罗斯·布金斯

1
您能否帮我们一个忙,然后发布计划任务的XML导出,以便我们可以看到其实际参数是什么?
瑞安·里斯

只是要确保:您确实检查了触发选项“跨时区同步”?之后,任务计划程序将使用UTC。
曼弗雷德·施密特

不,不打勾。但是,将其打勾后,我认为这不是我所要求的行为。我希望任务在本地时间下午3点运行,打勾后我相信它将在BST期间运行一个小时?
Ross Buggins

Answers:


4

我们只是在本周的生产服务器(也包括Windows Server 2012)上注意到了相同的问题。我们的时钟回到一小时后(也就是2013年11月3日,在多伦多,这里),时钟也开始了。

2013年11月12日更新:

  • 重新启动无效(任务继续运行两次)
  • 导出和重新导入任务无效(任务继续运行两次)
  • 在GUI中手动重新创建任务确实可以解决问题

此外,在与微软(由我们的系统管理员)进行了进一步讨论之后,微软表示: “ ...该问题已在Windows Server 2012中发现,并且仅在Windows的下一发行版Windows 8.1 / Windows Server 2012 R2中得到解决。” 。


这些也是通过XML文件导入的吗?请参阅我对Stijn答案的评论
Ross Buggins,2013年

我们大约有10个任务。那些手动输入的代码(我确定是该来源的,因为我最近创建了任务)没有运行两次的问题。其他一些任务是从XML导入的,确实有问题。我们明天将尝试重新启动,并与Microsoft进行跟进
Warren Stevens

另一个注意事项:我们没有为任何任务检查“跨时区同步”(以防万一)
Warren Stevens 2013年

来自我们的系统管理员:“ ...与Microsoft进行了一次会话,他们之前从未见过此情况,但无法确切地说出是什么原因。现在,他们要求我们尝试重新启动服务器并尝试重新创建任务。没有修补程序可安装以解决此问题,因为他们说其他受影响的客户可以通过重新启动或重新创建任务来解决...”
Warren Stevens 2013年

1
我们正在运行Windows 2016,并遇到相同的问题(作业从Windows 2012导入)
Greg

1

自DST转换以来,这个星期我就遇到了这个问题。我知道这不是一个很好的答案,但是删除并重新创建作业似乎可以解决问题。我对一整夜重复的几个作业进行了测试,重新创建的作业没有重复。


0

当作业计划为UTC + 0(Windows 2012 R2服务器)时,我们可以重现该错误。
例如,我们有一个在错误的日期运行的工作,该工作原定在凌晨2点进行。
由于我们的时区为UTC + 2,因此作业的运行时间为UTC + 0。
Windows似乎有一些舍入问题。也许它在内部使用UTC,并且如果作业正好在UTC + 0上运行,则一些舍入错误或竞争条件会导致作业在错误的日期运行。
我们还看到按计划运行但重新启动后的作业报告:

操作员或管理员拒绝了请求(0x800710E0)

将计划时间更改为例如凌晨2:02之后,错误消失了。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.