Перейти до вмісту

Cron у systemd timer

Перетворіть cron-вираз на готову пару systemd .timer та .service.

Введення
Вихід

Cron у systemd timer

Вставте вираз cron — такий, який ви розмістили б у crontab, наприклад `0 3 * * *` або `*/15 9-17 * * 1-5` — і цей інструмент перетворить його на значення systemd `OnCalendar=`, а потім зберуть навколо нього повний модуль `.timer` та відповідний йому модуль `.service`. Міграція сервера з cron на systemd зазвичай означає виконання цього перекладу вручну для кожного завдання; це робиться миттєво та правильно, включаючи розширення полів для кроків та діапазонів.

Встановіть назву модуля та команду для запуску, а за потребою — користувача та робочу директорію, які повинні використовуватися сервісом. Випадкова затримка додає `RandomizedDelaySec=`, щоб парк серверів не прокидався одночасно; Persistent додає `Persistent=true`, тому запуск, пропущений, коли машина була вимкнена, спрацьовує негайно після включення. Часовий пояс додає до кожного рядка розкладу назву зони IANA замість того, щоб покладатися на локальний час системи. Вставте кілька рядків cron одночасно, щоб створити один таймер з кількома записами `OnCalendar=` — зручно для завдання, яке раніше мало більше одного рядка у crontab.

Включіть опис простою мовою, щоб отримати однорядковий коментар над кожним розкладом, який пояснює, коли він спрацьовує, вашою мовою. Інструмент також стежить за єдиною конструкцією cron, яку systemd дійсно не може відтворити: коли обидва поля день місяця та день тижня обмежені, cron розглядає їх як АБО, а systemd's OnCalendar завжди їх комбінує (І) — коли це відбувається, додається попереджувальний коментар, щоб невідповідність не відправилась мовчки. Поле поза діапазоном або вираз з неправильною кількістю полів повідомляється як проста помилка, а не вгадується.

Все працює у вашому браузері — вираз cron та файл модуля ніколи не залишають ваш пристрій. Скопіюйте результат, завантажте його як файл .txt, щоб розмістити в `/etc/systemd/system/`, або відправте його в інший інструмент, щоб продовжити роботу з ним.

FAQ

Чому вихідні дані включають два модулі?
Таймер systemd тільки планує; йому потрібен відповідний модуль .service для фактичного запуску команди. Інструмент генерує обидва, пов'язані разом за допомогою Unit=.
Чи можу я перетворити більше одного рядка cron одночасно?
Так. Вставте кілька виразів, по одному в рядку, і вони стануть кількома записами OnCalendar= в одному модулі таймера для однієї команди.
Що означає попередження день місяця/день тижня?
cron спрацьовує, коли будь-яке з полів співпадає, якщо обидва обмежені; systemd's OnCalendar вимагає співпадіння обох. Інструмент попереджає вас, коли це змінює розклад, замість того щоб конвертувати його мовчки.
Чи підтримує він @daily, @hourly та інші макроси cron?
Так, разом з @weekly, @monthly, @yearly та @annually/@midnight, розширені до їх стандартних еквівалентів з п'яти полів перед перетворенням.
Мій вираз cron чи команда завантажуються де-небудь?
Ні. Перетворення працює повністю у вашому браузері — нічого, що ви вводите, не відправляється на сервер.