cronjob vs linux中的守护进程.什么时候用?

Who*_*ami 56 linux

将进程守护进程有很多优点,因为它与终端分离.但同样的事情也可以通过cron工作来实现.[如果不是,请纠正我]

在使用cronjob或守护程序进程时,我可以区分方案的最佳要求是什么?

Mar*_*rkR 51

通常,如果您的任务需要每小时运行几次(可能<10分钟),您可能希望运行守护程序.

始终运行的守护程序具有以下优点:

  • 它可以以大于每分钟1的频率运行
  • 它可以更容易地记住其先前运行状态,这使得编程更简单(如果您需要记住状态)并且可以在某些情况下提高效率
  • 在具有许多主机的基础架构上,它不会导致"踩踏群"效应
  • 可以更轻松地避免多次调用(也许?)

  • 如果它退出(例如,出现错误),除非您实现了该功能,否则它不会自动重启
  • 即使没有做任何有用的事情,它也会使用内存
  • 内存泄漏更是一个问题.

一般来说,健壮性有利于"cron",性能有利于守护进程.但是有很多重叠(在哪里都可以)和反例.这取决于您的具体情况.


tom*_*ahh 11

cronjob和守护进程之间的区别在于执行时间范围.

一个的cronjob是在同时执行一次下面的一个进程.cronjob的一个示例可能是一段时间内删除临时文件夹内容的脚本,或者是每天早上9点向一堆设备发送推送通知的程序.

守护进程是任何用户分离的过程中运行,但不会是重新启动,如果涉及到结束.


Ker*_* SB 5

如果您需要其他人可以永久使用的服务,则需要运行守护程序。这是一个相当复杂的编程任务,因为守护程序需要能够与世界进行永久性通信(例如,通过侦听套接字或TCP端口),并且需要编写它以干净地处理每个作业,而不会泄漏或甚至长时间锁定资源。

相反,如果您有一个特定的工作,其描述可以预先确定得足够好,并且可以自动执行而无需进一步的信息并且是独立的,那么拥有一个定期执行任务的cron作业可能就足够了。这设计起来要简单得多,因为您只需要在有限的时间内运行一次然后退出的程序即可。

简而言之:守护程序是永远运行的单个进程。Cron作业是一种机制,可以定期启动一个新的,短暂的过程。