【问题标题】:What happens if server crashes, after scheduling task using cron如果在使用 cron 调度任务后服务器崩溃会发生什么
【发布时间】:2018-08-18 18:54:36
【问题描述】:

假设我在未来的时间 t2 安排了一个任务 t1

如果服务器在时间 t1 崩溃怎么办。如果服务器在时间 t2 ( t1

如果服务器在 t1 崩溃并在 t3 重新启动并且说服务器在 t2 停机怎么办。如果服务器在 t3 ( > t2 ) 重新启动,那么计划在 t2 执行的任务是否会被执行

在衬衫中,cron 是否会保留要执行的任务的持久记录,以防服务器在预定时间内崩溃或停机

【问题讨论】:

  • 只要:在时间T之前和时间T之前服务器已经启动并且cron守护进程正在运行,那么在时间T调度的任务就会在时间T运行,所以我们的第一个场景,服务器在t2,t2之前重启仍会运行。第二种,t3服务器重启,不,t2不会运行

标签: javascript node.js cron scheduled-tasks cron-task


【解决方案1】:

简而言之:不会。Cron 只是在预定时间执行任务。如果服务器关闭,则不会执行任何任务。

同样,如果你乱用系统时钟,cron 仍然会相应地执行任务。

【讨论】:

  • 这意味着我必须保留所有任务的持久记录。我写了一个调度器。如果服务器崩溃了,它会检查所有时间已经过去的任务并执行它们,如果没有,则重新安排它们以供将来使用
  • 根据您的用例,通常使用 cron 每分钟调用一次您自己的任务管理器。然后,您自己的任务管理器使用一些逻辑(上次执行的时间戳等)来确定要执行的内容(如果有的话)。
【解决方案2】:

当服务器重新启动时,cron 将继续在其定期安排的时间执行。

Crons 不会追溯运行;他们这样做是没有意义的。假设你有一个 cron 在午夜备份服务器,而每个人都在家睡觉。如果服务器在晚上 11 点崩溃,并在第二天早上重新启动,您不会希望备份在每个人都在努力工作时自动开始运行。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-06-14
    • 1970-01-01
    • 1970-01-01
    • 2018-03-11
    • 2015-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多