【问题标题】:running really long scripts - how to keep them running and start them again if they fail?运行非常长的脚本 - 如果它们失败,如何保持它们运行并重新启动它们?
【发布时间】:2011-09-07 13:23:34
【问题描述】:

我需要在 CENTOS 服务器上运行一堆长时间运行的进程。

如果我让进程(python/php 脚本)运行,有时进程将停止运行因为一些小错误,例如。字符串编码问题或有时因为进程似乎被服务器杀死了

我尝试使用 nohup 并从 crontab 中触发作业

有什么方法可以让这些进程保持运行,从而保存所有变量并且我可以从它停止的地方重新启动脚本?

我知道我可以将它编程到代码中,但我更喜欢通用实用程序,它可以让这些东西保持运行,以便即使出现微不足道的错误也能完成脚本。

也许我需要某种流程管理工具?

非常感谢您的任何建议

【问题讨论】:

  • 我认为最好的解决方案是编写带有适当异常处理的脚本,这样它们就不会在没有至少记录需要修复的内容的情况下退出。
  • 一些分析器(例如xdebug)可以在发生错误时显示变量的值。所以,可能有一些工具也可以存储它。

标签: php python process centos process-management


【解决方案1】:

有什么方法可以让这些进程以这样一种方式运行,即所有变量都被保存并且我可以从它停止的地方重新启动脚本?

是的。这称为创建“检查点”或“纪念品”。

我知道我可以编程

很好。开始吧。每个问题都是独一无二的,因此您必须创建、保存和重新加载纪念品。

但更喜欢通用实用程序,它可以让这些东西保持运行,以便脚本完成,即使出现微不足道的错误。

它不能很好地概括。并非所有变量都可以保存。只有您知道以有意义的方式重新启动您的流程需要什么。

也许我需要某种流程管理工具?

不是真的。

琐碎的错误,例如。字符串编码问题

通常,我们通过单元测试找到这些。这样可以节省大量编程来解决错误。一盎司的预防胜过一磅愚蠢的变通办法。

有时是因为进程似乎被服务器杀死了。

什么?你最好找出原因。一盎司的预防胜过一磅愚蠢的变通办法。

【讨论】:

  • 感谢您的回复。我遇到的问题是我正在运行非常长的进程,可能需要长达 16-17 小时才能完成,并且正在通过复杂的字符串/xml 操作运行几乎随机的 HTML,因此错误几乎可以随机发生 - 什么是最好的方法对奇怪而美妙的编码进行单元测试?
  • @significance:减少发现问题的时间。无需对每个文档进行所有解析并等待数小时才能发现问题,只需阅读每张纸以检查编码。然后,在他们都通过编码测试后,继续下一步。如果你仔细想想,你有许多小的处理步骤序列。如果您想得更远,您会发现每个文件都有一个multiprocessing 处理操作队列。
  • @significance:这是一个完全独立且不相关的问题。请打开一个新问题来解决您的真正问题:长时间运行的进程需要很长时间才能找到编码问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-12-29
  • 2013-07-26
  • 2013-01-25
  • 1970-01-01
  • 1970-01-01
  • 2015-04-11
  • 1970-01-01
相关资源
最近更新 更多