Подтвердить что ты не робот

Cronjob vs daemon в linux. Когда использовать?

Есть преимущества, которые делают процесс демонтированным, так как он отсоединяется от терминала. Но то же самое также может быть достигнуто и работой cron. [Просьба исправить меня, если нет]

Какое лучшее требование, с помощью которого я могу отличать сценарии при использовании процесса cronjob или daemon?

4b9b3361

Ответ 1

В общем случае, если ваша задача должна выполняться более чем несколько раз в час (возможно, менее 10 минут), вы, вероятно, захотите запустить демон.

Демон, который всегда работает, имеет следующие преимущества:

  • Он может работать на частотах более 1 в минуту
  • Он легче запоминает состояние из своего предыдущего запуска, что упрощает программирование (если вам нужно запомнить состояние) и может повысить эффективность в некоторых случаях
  • В инфраструктуре со многими хостами она не вызывает эффекта "штампованного стада".
  • Можно легко избежать нескольких вызовов (возможно?)

НО

  • Если он завершает работу (например, после ошибки), он не будет перезагружен автоматически, если вы не внедрили эту функцию
  • Он использует память, даже когда ничего не делает.
  • Утечки памяти больше проблем.

В целом, робастность благоприятствует "cron", а производительность - за демона. Но есть много перекрытий (где либо будет хорошо), и встречных примеров. Это зависит от вашего точного сценария.

Ответ 2

Разница между cronjob и демоном - это временной интервал выполнения.

A cronjob - это процесс, который выполняется раз в то время. Примером cronjob может быть script, который время от времени удаляет содержимое временной папки или программу, которая отправляет push-уведомления каждый день в 9.00 до нескольких устройств.

В то время как демон - это процесс, отключаемый от любого пользователя, но не перезагружаемый, если он подходит к концу.

Ответ 3

Если вам нужна служба, которая постоянно доступна для других, вам нужно запустить демон. Это довольно сложная задача программирования, поскольку демон должен иметь возможность постоянно общаться с миром (например, при прослушивании сокета или TCP-порта), и он должен быть написан для обработки каждого задания без утечки или даже блокируя ресурсы в течение длительного времени.

В отличие от этого, если у вас есть конкретное задание, описание которого может быть определено достаточно хорошо заранее и которое может действовать автоматически без дополнительной информации и является самодостаточным, то вполне может быть выполнено задание cron, которое выполняется задача периодически. Это гораздо проще для дизайна, поскольку вам нужна только программа, которая запускается один раз в течение ограниченного времени, а затем завершается.

В двух словах: Демон - это единственный процесс, который выполняется вечно. Задача cron - это механизм, позволяющий периодически запускать новый, недолговечный процесс.

Ответ 4

Демон может использовать его долговечность в кэшировании, откладывать запись на диск или участвовать в длительных сеансах с клиентом.

Демон также должен быть свободен от утечек памяти, поскольку они могут накапливаться с течением времени и вызывать проблемы.