Cron vs системні таймери


83

Нещодавно мені вказували, що існує альтернатива cron, а саме системні таймери.

Однак я не знаю нічого про системні або системні таймери. Я використовував лише крон.

У Arch Wiki є невелика дискусія . Однак я шукаю детальне порівняння між cronта системними таймерами, зосередившись на плюсах і мінусах. Я використовую Debian, але я хотів би загальне порівняння для всіх систем, для яких доступні ці дві альтернативи. Цей набір може включати лише дистрибутиви Linux.

Ось що я знаю.

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

Systemd набагато новіший і дещо суперечливий. Вікіпедія повідомляє, що її початковий реліз був 30 березня 2010 року.

Отже, мій поточний перелік переваг cron над системними таймерами:

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

  2. Cron простий у використанні. Однозначно простіші, ніж системні таймери.

Відповідний перелік переваг системних таймерів над cron є:

  1. Системні таймери можуть бути більш гнучкими та працездатними. Але я хотів би приклади цього.

Отже, підсумовуючи, ось які речі було б добре побачити у відповіді:

  1. Детальне порівняння таймерів cron vs systemd, включаючи плюси та мінуси їх використання.
  2. Приклади речей, які можна зробити, а інші не можуть.
  3. Принаймні одне побічне порівняння сценарію cron та сценарію системних таймерів.

4
"Cron гарантовано є в будь-якій системі, схожій на Unix. Це не зміниться". - Я б на цьому рішуче дискутував. Хоча історичний крон часто включався в базові установки Unix, сьогодні в більшості систем це просто довільний додатковий програмний пакет. Насправді, існує кілька популярних альтернатив крона (наприклад, анакрон, фкрон, робота), які можуть бути кращими для крона. Функціональність cron не є важливою для роботи системи, як система, чи init, тому, якщо ви стурбовані поточною та майбутньою портативністю, я краще не ставлю на це свої ставки.
Гвідо

6
Це цілком перелік речей, які ви хочете відповісти. Я думаю, що, можливо, вам слід витратити трохи часу на вивчення інструментів і побачити, чи можете ви самі сформулювати ці відповіді, а якщо у вас є конкретні речі, яких ви не розумієте, запитайте їх тут.
larsks

5
Не зовсім. Я сказала все, що хочу сказати по темі. Вступати в розширену дискусію з приводу будь-чого, що стосується systemd, гірше, ніж безглуздо - деякі вважають, що незначні переваги, які приносить systemd, варті того, щоб корпоративна монополізація екосистеми linux. Інші - ні.
cas

7
"Крон дуже старий, починаючи з кінця 1970-х". Фактично правильний, але абсолютно не має значення, якщо пакунки у вашій системі підтримуються розумним та стабільним способом. Сонце також дуже давнє, але я сподіваюся, що це не означає, що ми повинні замінити його чимось блискучішим та новішим.
Отей

5
@Otheus Я думаю, що ви неправильно ставитеся до цього - сказати, що щось було довгий час - це не образа. Принаймні, для багатьох людей Unix. Це скоріше, як сказати, що будинку сто років - це, безумовно, означає, що у нього виникнуть деякі проблеми, деякі речі будуть дивні від переобладнання, але він також має певний шарм, і він повинен бути добре побудований. Це не говорити про його занепад. Це простий інструмент, який виявився корисним протягом чотирьох десятиліть.
дероберт

Відповіді:


43

Ось деякі моменти щодо цих двох :

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

  2. таймери systemd - це системні сервіси з усіма можливостями управління ресурсами, планування процесорів IO, ...
    Є список:

    • системні виклики
    • ідентифікатори користувачів / групи
    • членські контролі
    • приємна цінність
    • ОМВ оцінка
    • Клас планування IO та їх пріоритетність
    • Політика планування процесора CPU
    • спорідненість умаск
    • таймери слабкі
    • безпечні біти
    • доступ до мережі та, ...
  3. з опцією залежності, як і в інших системних службах, можуть існувати залежності від часу активації.

  4. Агрегати можна активувати різними способами, також можна налаштувати їх комбінацію. послуги можуть бути запущені та викликані різними подіями, такими як користувач, завантаження, зміни стану обладнання або, наприклад, 5 хвилин після підключення апаратного забезпечення та, ...

  5. набагато простіша конфігурація деяких файлів та прямих тегів прямого напрямку, щоб зробити різноманітні налаштування відповідно до ваших потреб із системними таймерами.

  6. Легко вмикайте / вимикайте всю справу за допомогою:

    systemctl enable/disable 
    

    і вбивати всіх дітей на роботі:

    systemctl start/stop
    
  7. системні таймери можуть бути заплановані за допомогою календарів і монотонних часів, що може бути дуже корисно у випадку різних часових поясів і, ...

  8. події системного часу (календар) точніші, ніж cron (здається точність 1s)

  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. З точки зору використання процесора системний таймер прокидає процесор за минулий час, але cron робить це частіше.

  11. Події таймера можуть бути заплановані на основі часу закінчення виконання, деякі затримки можуть бути встановлені між виконанням.

  12. Спілкування з іншими програмами також помітно, іноді для деяких інших програм потрібно знати таймери та стан їхніх завдань.


2
Це добре зусилля, дякую. Однак більш корисними будуть порівняння з кроном, включаючи приклад. Крім того, деякі з написаних вами не зовсім зрозумілі, наприклад, "з точки зору використання процесора системний таймер пробуджує процесор за минулий час, але cron робить це частіше".
Faheem Mitha

Привіт, @ F.sb! Здається, ваша відповідь означає, що ви можете планувати завдання, використовуючи різні часові пояси. Це правильно? Як би ти це зробив? Це було б значною перевагою перед стандартними реалізаціями cron, але я не зміг знайти про нього жодної інформації, за винятком man systemd.timeякої, здається, це суперечить: Не локальні часові пояси, крім UTC, не підтримуються.
Тад Ліспі

Залежності зручні. Наприклад, якщо резервна копія хоста працює як системний таймер, ви можете використовувати залежності, щоб забезпечити завершення експорту бази даних безпосередньо перед створенням резервної копії.
vk5tu

6
Будь ласка, будьте чеснішими наперед. Ви починаєте, кажучи, що це дещо щодо двох, а потім продовжуєте, перераховуючи переваги вашого бажаного вибору . Непогано, що ти маєш уподобання, але тоді ти повинен так заявити. На додаток до цього, той факт, що це все на користь однієї системи і не дивиться на плюси, які має система, змушує мене відчувати, що ця відповідь перекошена.
Джаспер

2
@jasper дорогий, я використовую обидва з урахуванням моїх потреб, і це завжди ваш вибір, щоб вибрати той, що ґрунтується на ваших потребах, я лише згадав деякі факти на основі документів та посібників.
F.sb

16

Прямо з вуст коня, так би мовити: https://wiki.archlinux.org/index.php/Systemd/Timers#As_a_cron_replacement

Уривок зі сторінки вище:

Переваги

Основні переваги використання таймерів пов'язані з кожною роботою, яка має власну системну службу. Деякі з цих переваг:

  • Роботу можна легко запустити незалежно від таймерів. Це спрощує налагодження.
  • Кожне завдання можна налаштувати для виконання у певному середовищі (див. Systemd.exec (5)).
  • Вакансії можна приєднати до груп.
  • Вакансії можуть бути налаштовані залежно від інших системних підрозділів.
  • Роботи реєструються в журналі systemd для легкої налагодження.

Коваджі

Деякі речі, які легко виконати з кроном, важко виконати лише з таймерними одиницями.

  • Складність: щоб налаштувати приурочене завдання з systemd, ви створите два файли та запустите пару команд systemctl. Порівняйте це з додаванням одного рядка до crontab.
  • Електронна пошта: немає вбудованого еквівалента MAILTO Cron для надсилання електронних листів у випадку відмови від роботи. Дивіться наступний розділ для прикладу встановлення еквівалента за допомогою OnFailure =.

6
Errr ... не впевнений, що я відчуваю щодо відповіді, яка майже повністю копіювати та вставляти, тим більше, що ліцензії не сумісні. Але як мінімум, вам слід виправити цей біт "див. Наступний розділ". З цією помилкою здається, що ви не прочитали те, що скопіювали та вставили.
дероберт

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.