Systemd timers вместо cron: когда прозрачность и логи решают всё
Я перестал использовать cron на новых серверах около трёх лет назад. Не фанатично, но там, где это оправдано.
Предыстория
Была стандартная ситуация: дежурный скрипт для ротации логов. В cron записи выглядели аккуратно, но однажды лог-файл вырос до 3 ГБ и сервер лёг. Почему? Cron-задание висело, но никто об этом не знал — ни лога, ни алерта.
Я полез смотреть, что пошло не так. Оказалось, скрипт упал с ошибкой доступа к диску, а cron молча его перезапустил в следующую минуту. Никто не заметил, пока не случился сбой.
Проблема
У cron минимальная обратная связь. Нет встроенного контроля выполнения, нет детальных логов, нет управления зависимостями. Если задача завершилась с ошибкой — вы узнаете об этом только по косвенным признакам. Параллельные запуски? Cron не блокирует, и это ведёт к гонкам и дублированию.
Почему это важно?
Для бизнеса это потеря данных и лишние простои. Когда cron-задача не выполнилась вовремя, могут не сформироваться отчёты, не произойти бэкап или не синхронизироваться реплики. Всё это — деньги и нервы.
Решение
Я перевёл все критичные задачи на systemd timers. Всё просто: создаёте .timer и .service файлы. Timer задаёт расписание (аналогично cron), а service — что запускать. Плюс я использую встроенные механизмы:
- 📌 Точные логи: journalctl -u myjob.service покажет stdout и stderr с таймстемпами.
- 🕒 Отложенный запуск: можно выполнить задачу, если сервер был выключен в нужный момент.
- ⚙️ Контроль зависимостей: запуск после монтирования файловой системы, после поднятия сети.
- 🔁 Уведомления об ошибках: через OnFailure= отправляю алерт в Telegram или Slack.
Результат
С тех пор — ни одной молчаливой проблемы с расписаниями. Если задача упала, я знаю об этом через минуту. Логи всегда под рукой, время запуска предсказуемо. Отказоустойчивость повысилась, а боли стало меньше.
Systemd timers — не замена cron на все случаи, а инструмент, который даёт прозрачность там, где cron оставляет вас слепым.
📬 Свяжитесь с нами
Хотите внедрить это в своем бизнесе? Пишите нам!
- 📧 Email: [email protected]
- 🌐 Сайт: 1it.pro
- 📝 Блог: blog.1it.pro
- ✈️ Telegram Global (EN): Admin_global
- ✈️ Telegram (RU): Admin