我们有一个不久前开发的 Windows 服务,它在远程服务器上使用大量计划任务。这似乎是一个坏主意,而且很可能确实如此,但是由于我们正在与另一家只能以这种方式激活其系统的公司合作,因此我们实际上没有更多的选择,只能选择它。
为了实现这一点,我们告诉使用 SCHTASKS 命令,它可以轻松地在另一台远程服务器上启动服务。然后,我们将此调用的输出存储到日志中。通常,我们得到这个:
2012-02-06 09:40:55 : SUCCESS: Attempted to run the scheduled task "W_PALREI".
这是我们在一切正常时收到的正常信息。有时我们会得到这个:
2012-02-20 15:53:29 : INFO: scheduled task "W_PALMO2" is currently running.
SUCCESS: Attempted to run the scheduled task "W_PALMO2".
这仍然没有什么严重的,因为我们知道该任务可能会占用一些时间,并且我们知道它很快就会恢复可用。有时我们会得到这个:
2012-02-13 08:50:03 : INFO: Scheduled task "W_PALMO2" has already been disabled.
这不好,但我们知道这意味着有人禁用了另一台服务器上的任务,因此我们可以采取相应的行动。
这就是它变得奇怪的地方。我们注意到一段时间后(大约持续运行 2 周),任务将没有响应。每次我们检查时,似乎一切都运行良好(服务正在运行,我们可以看到正在处理的数据库的内容),但任务仍然无法启动。当我们查看日志文件时,我们发现:
2012-02-22 15:50:15 : ERROR: Class does not exist.
过了一会儿,我们收到了这条消息:
2012-02-22 15:21:15 : ERROR: Not enough storage is available to process this command.
然后出现另一条消息,依此类推。过了一会儿,我们简单地得到了这个
2012-02-22 16:32:38 :
这意味着 Process.Start 不再获得输出,或者 SCHTASKS 不再发送它,或者由于某种原因停止调用进程。我在 Google 上查看,但找不到任何关于 SCHTASKS 给出的信息,所以我怀疑 process.start 可能是问题所在
有没有人得到这个以及如何纠正这个?或者它是进程启动,是否有任何其他方法可以从远程服务器正确启动任务,前提是您有凭据......?
我们可能想在服务器上检查以诊断问题的任何其他内容?谢谢,