【问题标题】:resume timing in task scheduler?在任务调度程序中恢复计时?
【发布时间】:2013-05-26 14:30:01
【问题描述】:

我试图让一个程序每 7 天运行 13 小时,然后程序将停止,任务将结束。但是我可能会在那段时间关闭我的电脑,然后你知道当我再次启动任务时计时器是否会恢复?

例如

我开始我的任务,它运行 5 个小时,然后关闭我的电脑。

第二天我打开电脑,任务开始运行8小时

那么……

任务会因为已达到 13 小时而结束,还是会继续运行直到达到 13 小时?

有没有办法让计时器在我关闭计算机时恢复,或者你知道有什么程序可以做到这一点

任何帮助将不胜感激,谢谢

【问题讨论】:

  • 我不认为这可以通过一项任务来完成。但是,如果您存储进程的状态(如 starttime),您可以拥有多个任务,这些任务在登录和注销时开始,然后根据存储的 starttime 采取行动。虽然不容易或健壮......

标签: windows task scheduler timing resume


【解决方案1】:

在某种程度上,这取决于您的计算机或移动设备运行的操作系统。如果您运行的是 Windows 2000+ 或 UNIX 衍生版本(Linux、BSD、OSX),我们可以使用 cron 等工具来启动我们。如果是移动设备,我们还有很多工作要做。

我假设您有一个 Windows 或 UNIX 设备可以启动。因此,您可以在开始时启动操作系统的 Startup/init.d 层。这仅用于在通电时关闭。例如,我们可能会编写一个 shell 脚本/WSH 脚本,在登录/启动时运行您的程序。此时,您正在跑步,但我们还想做更多的事情。
由于您的应用程序现在可以由系统启动,因此我们需要确保它保持运行并在必要时重新启动,即使系统没有重新启动也是如此。例如,它可能被其他事件杀死/终止。我们的目标是在系统启动时启动您的脚本,并确保它运行 7 小时。假设 UNIX/Linux:

这可以通过两个任务来完成:

  • 一项任务只是确保我们至少每 7 天运行一次
  • 另一项任务确保我们在运行时运行 7 小时,仅此而已。

我们的第一个任务是一对 cron 脚本。一个运行每 30 分钟。它的唯一任务是检查以确保主要工作任务正在运行或已完成。如果它没有完成,并且由于某种原因没有运行,请启动它。第二个 cron 任务每 7 天运行一次,运行时会清除工作任务中的标记。

我们的主要工作任务在运行时将其工作负载分成 30 分钟的片段。它运行每个段,并在某个地方的临时存储中留下一个“面包屑”——基本上,它说“我又做了 30 分钟的工作”。当它有 14 个面包屑时,它就完成了。

这一切是如何运作的:

  1. Cron 或 init.d 启动主工作线程
  2. 工作线程运行,希望达到 14 个“工作块”并终止。
  3. 每周,其他 cron 任务都会检查我们是否有 14 个块。如果我们这样做了,那就是成功的运行。删除它们并重新开始。如果没有,请重新启动工作任务。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-07-20
    • 1970-01-01
    • 2011-08-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-19
    • 2019-02-06
    相关资源
    最近更新 更多