cronjob vs daemon in linux. When to use?

linux

Solution

In general, if your task needs to run more than a few times per hour (maybe <10 minutes) you probably want to run a daemon.

A daemon which is always running, has the following benefits:

- It can run at frequencies greater than 1 per minute

- It can remember state from its previous run more easily, which makes programming simpler (if you need to remember state) and can improve efficiency in some cases

- On an infrastructure with many hosts, it does not cause a "stampedeing herd" effect

- Multiple invocations can be avoided more easily (perhaps?)

BUT

- If it quits (e.g. following an error), it won't automatically be restarted unless you implemented that feature

- It uses memory even when not doing anything useful

- Memory leaks are more of a problem.

In general, robustness favours "cron", and performance favours a daemon. But there is a lot of overlap (where either would be ok) and counter-examples. It depends on your exact scenario.

Problem

There are advantages making a process daemonized, as it it detached from the terminal. But the same thing also can be achieved by cron job as well. [ Kindly correct me if not ] What is the best requirement with which i can differentiate the scenarios when to use cronjob or daemon process?

Original source