Cron vs systemd таймеры

[ПРИМЕЧАНИЕ. Цель этого вопроса – помочь людям оценить, будут ли таймеры systemd наилучшим выбором для удовлетворения потребностей времени работы. Многие (большинство?) Людей, вероятно, используют cron, но, возможно, некоторые из них открыты для альтернатив / улучшений.]

Недавно мне сообщили, что существует альтернатива cron, а именно systemd таймеры.

Однако я ничего не знаю о таймерах systemd или systemd. Я использовал только cron.

В Arch Wiki есть небольшая дискуссия . Тем не менее, я ищу подробное сравнение между таймерами cron и systemd с упором на плюсы и минусы. Я использую Debian, но мне хотелось бы получить общее сравнение для всех систем, для которых доступны эти две альтернативы. Этот набор может включать только дистрибутивы Linux.

Вот что я знаю.

Крон очень старый, восходит к концу 1970-х годов. Оригинальным автором cron является Кен Томпсон, создатель Unix. Vixie cron, из которых клоны в современных дистрибутивах Linux являются прямыми потомками, датируются 1987 годом.

Systemd намного новее и несколько противоречива. Википедия сообщает, что его первоначальный релиз был 30 марта 2010 года.

Итак, мой текущий список преимуществ cron over systemd таймеров:

  1. Cron гарантированно будет в любой Unix-подобной системе, в том смысле, что она является устанавливаемой поддерживаемой частью программного обеспечения. Это не изменится. Напротив, systemd может или не может оставаться в дистрибутивах Linux в будущем. Это в основном система init и может быть заменена другой системой инициализации.

  2. Cron прост в использовании. Определенно проще, чем таймеры systemd.

Соответствующий список преимуществ таймеров systemd над cron:

  1. Таймеры Systemd могут быть более гибкими и способными. Но я бы хотел привести примеры этого.

Итак, чтобы подвести итог, вот некоторые вещи, которые было бы хорошо увидеть в ответе:

  1. Подробное сравнение cron vs systemd таймеров, включая плюсы и минусы использования каждого.
  2. Примеры вещей, которые могут сделать другие, не могут.
  3. По крайней мере, одно бок о бок сравнение скрипта cron с сценарием systemd timers.

2 Solutions collect form web for “Cron vs systemd таймеры”

Вот несколько моментов в отношении этих двух (надеюсь, что ответит на ваши вопросы):

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

2. Таймеры systemd – это системные службы со всеми их возможностями для управления ресурсами, планирования ввода-вывода, …
Есть список:
– системные фильтры
– идентификаторы пользователя / группы
– Контроль членства
– отличная стоимость
– оценка OOM
– класс планирования и приоритет ввода-вывода
– Политика планирования CPU
– сродство umask
– таймеры слаксы
– защищенные биты
– доступ к сети и …

3. с параметром зависимостей, как и другие службы systemd, могут быть зависимости от времени активации.

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

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

6. легко включить / отключить все это с помощью:

 systemctl enable/disable 

и убейте всех детей с:

 systemctl start/stop 

7. Таймеры systemd могут быть запланированы с каландрами и монотонными временами, которые могут быть действительно полезны в случае разных часовых поясов и …

8. события systemd time (каландр) более точны, чем cron (кажется, 1s precesion)

9. Системные события времени более значимы, для тех повторяющихся или даже тех, которые должны произойти один раз, вот пример из документа :

 Sat,Thu,Mon-Wed,Sat-Sun → Mon-Thu,Sat,Sun *-*-*00:00:00 Mon,Sun 12-*-* 2,1:23 → Mon,Sun 2012-*-* 01,02:23:00 Wed *-1 → Wed *-*-01 00:00:00 Wed-Wed,Wed *-1 → Wed *-*-01 00:00:00 Wed, 17:48 → Wed *-*-* 17:48:00 

10. из точки зрения точки использования процессора. Таймер systemd пробуждает процессор в истекшее время, но cron делает это чаще.

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

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

Прямо из уст лошади, так сказать: https://wiki.archlinux.org/index.php/Systemd/Timers#As_a_cron_replacement

Выдержка из страницы выше:

Выгоды

Основные преимущества использования таймеров исходят от каждой работы, имеющей собственный системный сервис. Некоторые из этих преимуществ:

  • Работы можно легко запустить независимо от таймеров. Это упрощает отладку.
  • Каждое задание может быть настроено для работы в определенной среде (см. Systemd.exec (5)).
  • Рабочие места могут быть прикреплены к группам.
  • Задания могут быть настроены так, чтобы зависеть от других системных единиц.
  • Задания регистрируются в журнале systemd для легкой отладки.

Предостережения

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

  • Сложность: чтобы настроить временную работу с системой, вы создаете два файла и запускаете пару команд systemctl. Сравните это с добавлением одной строки в crontab.
  • Письма: нет встроенного эквивалента MAILTO от cron для отправки электронной почты при неудаче работы. В следующем разделе приведен пример настройки эквивалента с помощью OnFailure =.
  • systemd: Как выполнять задание как периодически, так и один раз при завершении работы системы?
  • Таймер Systemd, срок действия которого истек
  • системный таймер каждые 2 часа через 30 минут после часа?
  • Синхронизировать почту с помощью offlineimap через службу / таймер systemd; получение пароля из гнома
  • Удаление таймера, созданного с помощью systed-run --on-calendar
  • Как узнать, какая команда выполняется файлом systemd .timer?
  • Linux и Unix - лучшая ОС в мире.