如何解决 Windows 计划任务未运行的问题?

Posted

技术标签:

【中文标题】如何解决 Windows 计划任务未运行的问题?【英文标题】:How to troubleshoot Windows Scheduled Task not running? 【发布时间】:2010-10-26 07:47:18 【问题描述】:

在部署我们的 .net 应用程序的过程中,我在服务器上设置了大约 20 个计划任务,所有这些任务基本上都做同样的事情:调用一个小型 .net 控制台应用程序,从 SQL 数据库中提取数据并将其发布到 Web 服务。每个任务调用应用程序的一个单独副本,每个副本在其配置文件中具有不同的查找 ID 值。

除了其中两个任务外,所有任务每晚都能可靠地运行。其中两个任务似乎不时停止运行,目前尚不清楚原因。当它们停止运行时,计划任务界面会正确显示它们的最后运行日期,该日期比在计划时间继续运行的其他任务晚一天或更长时间。停止运行的任务不会自行再次运行,尽管已按计划每晚运行。事件日志或计划任务界面本身中没有记录错误。这对我们来说是最奇怪的部分:如果我手动启动计划任务,它运行良好,它调用 .net 控制台应用程序并且一切都完成而没有异常。然后它继续在预定的时间运行良好,一次数天或数周,但最终失败,似乎出乎意料。看来这两个任务总是在同一个晚上开始失败。

【问题讨论】:

我认为这个问题的答案***.com/questions/32589381 也可以帮助一些人了解为什么手动运行的任务并不总是按计划运行。 (但从它们的描述方式来看,这些不是重复的问题。) 摘要:Windows 2012 计划任务并不总是看到正确的环境变量,包括PATH,用于任务设置为运行的帐户;事实上,他们只会在任务用户实际登录时看到完整正确的变量集。 【参考方案1】:

有一个“最后结果”列,它应该为您提供与正在运行的任务本身相关的代码(它不会有任何类型的异常数据)。 0 表示任务完成且没有错误。您可以查找其他任何内容,看看为什么任务无法启动。如果任务似乎仍然没有运行,但您仍然看到 Last Result 为 0,这意味着您的代码中有问题,但它正在正常退出。

【讨论】:

【参考方案2】:

也许他们挂了,还在跑?

您可以点击额外菜单并选择菜单项查看日志,然后记事本将从任务计划器中打开一个日志文件

【讨论】:

【参考方案3】:

将计划任务与无密码 Windows 用户帐户关联时会出现计划任务未运行的一个原因:默认情况下,计划任务无法使用空白密码运行。如果您想从没有密码的帐户运行计划任务,您必须禁用系统变量:

转至:开始 > 管理工具 > 本地安全策略 > 安全设置 > 本地策略 > 安全选项 选择:“帐户:将使用空白密码的本地帐户限制为仅限控制台登录” 禁用此变量

免责声明:不建议使用没有密码的帐户。

【讨论】:

【参考方案4】:

当我尝试对行为不端的计划任务进行故障排除时,我发现此页面很有帮助:http://support.microsoft.com/kb/308558

选择 View->Details 显示附加信息,例如 Last Run Time 和 Status,这个页面告诉我状态/错误代码的含义:http://msdn.microsoft.com/en-us/library/windows/desktop/ms681381(v=vs.85).aspx

【讨论】:

【参考方案5】:

Taskscheduler 在 64 位系统上假定应用程序是 64 位的。 如果是 32 位从 32 位命令行启动它,即如果你想运行 c:\program files (x86)\Myprogram\Program.exe,告诉 taskscheduler 启动:

%systemroot%\Syswow64\cmd.exe /C "c:\program files (x86)\Myprogram\Program.exe"

这会强制它从 32 位命令提示符启动,因此使用 32 位仿真。

【讨论】:

【参考方案6】:

您是否设置了“开始于”属性?

如果这些 .NET 控制台应用程序需要 app.config 或某些位于其路径中的文件,则必须将“Start in”属性设置为“c:\your\app\path\”,否则它们会像在系统目录,找不到需要的文件!

【讨论】:

【参考方案7】:

以下 SO 问题的答案也可能与阅读此问题的人高度相关(但是,请注意,它仅描述了计划任务的一个可能的特定问题,我相信这些问题都不是另一个的副本):

Why is my Scheduled Task updating its 'Last Run Time' correctly, and giving a 'Last Run Result' of '(0x0)', but still not actually working?

对另一个问题的回答总结是,Windows 2012 计划任务看不到正确的环境变量,包括 PATH,对于设置为运行任务的帐户。

就更一般的计划任务故障排除而言(如本问题所述),您可以测试此特定问题(例如,在任务中运行 SET > test.txt,如该答案中所建议的那样),一旦您可以看到它发生,如果它影响到你,你可以解决它。

【讨论】:

【参考方案8】:

在我的情况下,即使它说上次运行成功 (0),计划任务也不会运行。事实证明,运行作业的 Windows 用户帐户已被锁定。我之所以意识到这一点,是因为我尝试编辑现有的计划任务,将用户帐户设置为相同的,然后点击确定,它给了我一个关于帐户被锁定的错误。

【讨论】:

【参考方案9】:

我发现这个超级有用的链接:https://windowsreport.com/windows-scheduled-tasks-not-running/ 用于许多用例的彻底调试步骤。

在我的情况下,调度程序配置为运行的用户帐户被锁定,停止执行计划任务,没有任何日志或报告问题。

【讨论】:

以上是关于如何解决 Windows 计划任务未运行的问题?的主要内容,如果未能解决你的问题,请参考以下文章

windows计划任务的问题。

请问如何解决的?“windows2008 X64下,建立CMD程序的开机运行计划任务不能正常执行. 但直接双击执行”

WIN7 64位系统任务计划程序里运行VBS脚本 报错,脚本本身没问题!请问怎么解决?

磁盘碎片整理功能无法启动,打开,提示“任务计划程序服务未运行,请启动后再试”,怎么解决?

windows任务计划程序是怎么回事,有啥用途,该怎么设置??

如何在计划任务中运行 PHP 文件(Windows 任务计划程序)