hostprofi.ru
Подобрать хостинг
Термин·буква S

Systemd timer

краткое определение

Systemd timer — механизм планирования задач в Linux через systemd, аналогичный cron. Запускает service-юнит по расписанию или событию. Преимущества перед cron: централизованные логи через journald, зависимости и условия, отложенный запуск при пропуске.

Systemd timer — юнит типа .timer в systemd, запускающий соответствующий .service-юнит по расписанию. Это современная альтернатива cron с интеграцией в экосистему systemd: логи доступны через journalctl, статус — через systemctl, управление зависимостями — стандартными механизмами systemd.

Как работает

Пара файлов: backup.service (что выполнять) и backup.timer (когда).

/etc/systemd/system/backup.timer:

[Unit]
Description=Daily backup timer

[Timer]
OnCalendar=*-*-* 03:00:00
Persistent=true

[Install]
WantedBy=timers.target

Директива Persistent=true означает: если система была выключена в момент плановой задачи, при следующем включении задача будет выполнена немедленно. Это отличие от cron, который пропускает задачу при простое системы.

Управление: systemctl enable --now backup.timer, systemctl list-timers — список всех таймеров и время следующего запуска.

История

Systemd timer появился в systemd версии 183 (2012 год). Первоначально systemd-timers не имели часового пояса и RealTime-директив — они добавлялись постепенно. В современных версиях systemd (247+, Ubuntu 20.04) поддерживается OnCalendar с полным синтаксисом, включая временные зоны и точные временны́е выражения типа Mon..Fri 09:00.

Связь с хостингом

На VPS systemd timer заменяет cron для надёжных фоновых задач: резервные копии, очистка кэша, отчёты. Основное преимущество: journalctl -u backup.service показывает историю всех запусков с выводом команды — в cron логи приходилось отдельно перенаправлять в файл.

Синтаксис systemd-timer

Два файла: myapp.timer (расписание) + myapp.service (команда). В .timer: [Timer] OnCalendar=*-*-* 02:00:00 Persistent=true. Persistent=true — запускает пропущенные задачи при старте системы (аналог cron @reboot).

Преимущества перед cron

Интеграция с systemd journal: лог каждого запуска через journalctl -u myapp.service. Зависимости между задачами. OnBootSec — запуск через N секунд после загрузки. Изоляция ресурсов: CPUQuota, MemoryMax. systemctl list-timers — все таймеры и следующий запуск.

Примеры использования

Ночные бэкапы: OnCalendar=*-*-* 03:00:00. Certbot renew: OnCalendar=*-*-* 12:00:00 (Certbot устанавливает этот таймер автоматически). Очистка логов, ротация файлов, периодическая синхронизация данных.

Мониторинг systemd-timer

systemctl list-timers --all — все таймеры: последний запуск, следующий. Статус конкретного: systemctl status backup.timer. Если LAST TRIGGER давно: проверить journalctl -u backup.service. Uptime Robot Heartbeat monitor + curl в сервисе — внешний мониторинг выполнения задач.

Отладка таймеров

Ручной запуск сервиса таймера: systemctl start backup.service (без ожидания таймера). Проверка ошибок: journalctl -u backup.service -n 50. Если OnCalendar не срабатывает: проверить синтаксис systemd-analyze calendar "*-*-* 02:00:00". Persistent=true гарантирует запуск пропущенных задач.

Другие термины

Systemd timer — что это, определение и как работает | Справочник — hostprofi.ru