在持久的cronjobs / worker运行时部署应用程序?

时间:2014-09-12 21:00:41

标签: cron

假设我们有一些持久的cronjob / worker,运行或一些生产服务器。我们有新的应用程序代码发布,并准备将其部署到生产中。

我们应该如何处理这个cronjob /工人?

  • 等待cronjob / worker完成它的工作,并且在部署结束之前不要再开始+限制所有其他cronjobs / worker开始直到部署结束
  • 在cronjob / worker&中实现SIGTERM处理程序在部署之前将SIGTERM发送给所有nessesary进程? (有时候很难实现这种类型的挂钩)
  • 将持久的cronjob / worker分成几部分,推入队列并忘记这个问题?
  • 有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我假设您担心编写部署时正由cron执行的文件或更改这些作业可能使用的文件?

您可以拥有作业运行时每个作业触摸的job.lock文件,并在作业完成后删除。

在部署开始时,您可以

  • 创建一个deploy.lock文件,所有作业/工作人员都会监视,如果存在则不会启动
  • 让您的部署过程监视job.lock文件,只有在没有
  • 的情况下才会继续
  • 完成后删除deploy.lock

从本质上讲,你在第一个要点中提出了同样的建议。

我不久前读过这个问题,并讨论了确切的问题 Can a shell script delete or overwrite itself?

我对shell读取和磁盘写入缓冲区没有信心,所以我不想说废话。也许我的方法过于简单化或根本没有效果,也许你覆盖正在执行的文件是无害的。很想知道。