【问题标题】:Windows Task Scheduler stops tasks when it's been running for X daysWindows 任务计划程序在运行 X 天后停止任务
【发布时间】:2014-08-12 18:34:24
【问题描述】:

我正在从命令行创建计划任务:

schtasks /Create /SC ONSTART /TN "Zookeeper server" /TR D:\Zookeeper\zookeeper-3.4.6\bin\zkServer.cmd /RU System /V1 /f

问题是始终选中“如果运行 X 天则停止任务”选项。我尝试取消选中它,但它总是会立即恢复。既然是服务器,我希望它能够运行 3 天以上。

我看到了一个解决方案,您必须导出任务的 xml,手动更改值(ExecutionTimeLimit),删除任务并从 xml 模板创建它,但这也不起作用。

我还认为它是 ONSTART 触发器的强制选项,所以我尝试用一​​次性触发器替换它,同样的事情发生了。

有没有办法确保我的应用在启动时运行(没有用户登录)?仍然允许用户随心所欲地停止和启动它。

我知道服务,但我听说使用 java 从应用程序创建服务有点困难。

编辑:我更愿意解决这个问题,但如果这不可能,可以将 Zookeeper Server 安装为服务。我尝试使用 nssm 2.23,但无法静默安装服务(必须在没有用户界面的情况下完成)。

【问题讨论】:

    标签: java windows service scheduled-tasks apache-zookeeper


    【解决方案1】:

    为什么不将该命令作为服务而不是在任务调度程序中运行呢?任务调度器,顾名思义就是调度任务,而不是永远运行它们。

    您可以在服务器启动时将命令作为服务运行,并在用户想要停止它时给予控制权。在另一个问题中有更多关于如何使其成为服务的信息:Run batch file as a Windows service

    【讨论】:

    • 我似乎在使用它时遇到了问题。它向我的安装程序添加了两个依赖项(计划任务是在 Inno Setup 可执行文件中创建的)。我不知道它是否适用于每个工作站。我什至无法让它在我的身上发挥作用。我无法安装 RunAsService,因为它需要 Microsoft .Net Framework 1.1 包,当我尝试安装它时,出现错误“Windows Installer 初始化时发生错误。安装程序现在将关闭。'
    【解决方案2】:

    我找到了一个不错的 Windows 服务包装器,它允许我在命令行中安装和管理服务。从我今天测试的结果来看,它与 Zookeeper 服务器配合得很好。

    https://github.com/kohsuke/winsw/

    【讨论】: