Cronjob vs daemon в linux. Когда использовать?
Есть преимущества, которые делают процесс демонтированным, так как он отсоединяется от терминала. Но то же самое также может быть достигнуто и работой cron. [Просьба исправить меня, если нет]
Какое лучшее требование, с помощью которого я могу отличать сценарии при использовании процесса cronjob или daemon?
Ответы
Ответ 1
В общем случае, если ваша задача должна выполняться более чем несколько раз в час (возможно, менее 10 минут), вы, вероятно, захотите запустить демон.
Демон, который всегда работает, имеет следующие преимущества:
- Он может работать на частотах более 1 в минуту
- Он легче запоминает состояние из своего предыдущего запуска, что упрощает программирование (если вам нужно запомнить состояние) и может повысить эффективность в некоторых случаях
- В инфраструктуре со многими хостами она не вызывает эффекта "штампованного стада".
- Можно легко избежать нескольких вызовов (возможно?)
НО
- Если он завершает работу (например, после ошибки), он не будет перезагружен автоматически, если вы не внедрили эту функцию
- Он использует память, даже когда ничего не делает.
- Утечки памяти больше проблем.
В целом, робастность благоприятствует "cron", а производительность - за демона. Но есть много перекрытий (где либо будет хорошо), и встречных примеров. Это зависит от вашего точного сценария.
Ответ 2
Разница между cronjob и демоном - это временной интервал выполнения.
A cronjob - это процесс, который выполняется раз в то время. Примером cronjob может быть script, который время от времени удаляет содержимое временной папки или программу, которая отправляет push-уведомления каждый день в 9.00 до нескольких устройств.
В то время как демон - это процесс, отключаемый от любого пользователя, но не перезагружаемый, если он подходит к концу.
Ответ 3
Если вам нужна служба, которая постоянно доступна для других, вам нужно запустить демон. Это довольно сложная задача программирования, поскольку демон должен иметь возможность постоянно общаться с миром (например, при прослушивании сокета или TCP-порта), и он должен быть написан для обработки каждого задания без утечки или даже блокируя ресурсы в течение длительного времени.
В отличие от этого, если у вас есть конкретное задание, описание которого может быть определено достаточно хорошо заранее и которое может действовать автоматически без дополнительной информации и является самодостаточным, то вполне может быть выполнено задание cron, которое выполняется задача периодически. Это гораздо проще для дизайна, поскольку вам нужна только программа, которая запускается один раз в течение ограниченного времени, а затем завершается.
В двух словах: Демон - это единственный процесс, который выполняется вечно. Задача cron - это механизм, позволяющий периодически запускать новый, недолговечный процесс.
Ответ 4
Демон может использовать его долговечность в кэшировании, откладывать запись на диск или участвовать в длительных сеансах с клиентом.
Демон также должен быть свободен от утечек памяти, поскольку они могут накапливаться с течением времени и вызывать проблемы.