任务调度程序运行了两次任务

Ros*_*ins 13 scheduled-task windows-server-2012

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

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

位于伦敦的两台服务器都是 Windows 2012,它们的计划任务设置为在周一至周五的下午 3 点运行。这已经设置了过去 5 个月没有问题。

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

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

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

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

事件 200 15:00:20 任务计划程序在任务“{75a3590f-dec1-4dee-bd27-73d63a50a9d7}”的实例“C:\下午 3 点”。

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

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

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

事件 200 16:00:20 任务计划程序在任务“\下午 3 点”。

事件 201 16:00:23 任务计划程序成功完成任务“\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>
Run Code Online (Sandbox Code Playgroud)

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

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 点。我查看了其他预定的作业,它们只运行了一次。

War*_*ens 6

我们刚刚注意到本周发生在我们的生产服务器(也是 Windows Server 2012)上的相同问题。它也在我们的时钟倒退一小时后开始(2013 年 11 月 3 日,在多伦多)。

2013 年 11 月 12 日更新:

  • 重新启动也没有工作(任务持续两次运行)
  • 导出和重新导入任务做工作(任务持续两次运行)
  • 在 GUI 中手动重新创建任务确实可以解决问题

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