cronjob против демона в linux. Когда использовать? [закрытый]


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

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

4 53

4 ответа:

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

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

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

но

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

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

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

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

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

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

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

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

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

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