プロセスが端末から切り離されるため、プロセスをデーモン化する利点があります。しかし、同じことは cron ジョブでも実現できます。[そうでない場合は親切に修正してください]
cronjob またはデーモン プロセスを使用するシナリオを区別できる最適な要件は何ですか?
プロセスが端末から切り離されるため、プロセスをデーモン化する利点があります。しかし、同じことは cron ジョブでも実現できます。[そうでない場合は親切に修正してください]
cronjob またはデーモン プロセスを使用するシナリオを区別できる最適な要件は何ですか?
一般に、タスクを 1 時間に数回 (おそらく 10 分未満) 実行する必要がある場合は、おそらくデーモンを実行する必要があります。
常に実行されているデーモンには、次の利点があります。
しかし
一般に、堅牢性は「cron」に有利であり、パフォーマンスはデーモンに有利です。しかし、多くの重複 (どちらでも問題ありません) と反例があります。それはあなたの正確なシナリオに依存します。
cronjob とデーモンの違いは、実行時間枠です。
cronjobは、時々実行されるプロセスです。cronjob の例としては、一時フォルダーの内容を時々削除するスクリプトや、毎日午前 9 時に多数のデバイスにプッシュ通知を送信するプログラムなどがあります。
一方、デーモンはユーザーから切り離されて実行されるプロセスですが、終了しても再起動されません。
他のユーザーが永続的に利用できるサービスが必要な場合は、デーモンを実行する必要があります。これは、かなり複雑なプログラミング タスクです。デーモンは、永続的に世界と通信できる必要があり (たとえば、ソケットまたは TCP ポートでリッスンすることによって)、各ジョブをリークやリークなしできれいに処理するように記述する必要があるためです。リソースを長時間ロックすることさえあります。
対照的に、特定のジョブの説明が事前に十分に決定でき、それ以上の情報がなくても自動的に動作し、自己完結型である場合は、タスクを定期的に実行する cron ジョブを用意するだけで十分です。 . これは、限られた時間だけ実行して終了するプログラムが必要なだけなので、設計がはるかに簡単です。
一言で言えば、デーモンは永遠に実行される単一のプロセスです。cron ジョブは、短期間の新しいプロセスを定期的に開始するメカニズムです。
デーモンは、状態をキャッシュしたり、ディスクへの書き込みを延期したり、クライアントとの長時間のセッションに参加したりすることで、その寿命を利用できます。
また、時間の経過とともにメモリ リークが蓄積して問題を引き起こす可能性があるため、デーモンにはメモリ リークがあってはなりません。