停止守护进程可以破坏我的数据吗?

时间:2010-12-17 19:32:50

标签: ruby daemons

我正在使用delayed_job在我的rails应用上运行一些后台进程。这些进程读取和写入数据库以及写入日志文件。

我的问题是 - 当我停止工作时,它是否会终止进程(最终会破坏我的数据)还是等待工作结束或类似的事情?

1 个答案:

答案 0 :(得分:2)

这一切都取决于你如何编写代码。

一般来说,杀死一个工作会使代码上的插件瘫痪,并立即停止。这可能是在写入过程中或刷新缓冲区或正常关闭文件之前。

如果您有完成任务,您可以捕获信号。然后,您的代码可以选择忽略该信号并继续运行,这不是最佳解决方案,或者它可以开始正常关闭,刷新缓冲区,关闭数据库连接,关闭文件等,然后退出。

并且,忽略信号不好的原因是操作系统发送的一些信息告诉应用程序在系统关闭或重新启动之前关闭。没有关闭的应用程序会让用户或系统管理员感到生气,然后他们会找到一种方法让它退出,很可能是以一种不合适的方式。

查看Signal了解详情。