Ответ
Таймеры (.timer) в systemd — это юниты для планирования задач, современная и более мощная альтернатива cron. Они предназначены для активации других юнитов (обычно сервисов — .service) по расписанию или по событию.
Ключевые преимущества перед cron:
- Интеграция с системой: Полная интеграция с journald для структурированного логирования, управление через
systemctl. - Зависимости: Могут использовать систему зависимостей systemd (например, запускать задачу только после монтирования определённого раздела).
- Гибкое расписание: Поддержка календарных выражений (например,
Mon..Fri), относительных интервалов и активации по событию загрузки. - Persistent mode: Опция
Persistent=trueгарантирует выполнение пропущенной задачи при следующем запуске системы.
Пример: Ежедневное резервное копирование
-
Сервис (
/etc/systemd/system/backup.service): Определяет что выполнять.[Unit] Description=Database backup job [Service] Type=oneshot ExecStart=/usr/local/bin/backup-script.sh User=backup-user -
Таймер (
/etc/systemd/system/backup.timer): Определяет когда выполнять.[Unit] Description=Run backup daily at 2 AM [Timer] OnCalendar=*-*-* 02:00:00 Persistent=true [Install] WantedBy=timers.target -
Активация и управление:
# Включить таймер для автозапуска sudo systemctl enable backup.timer # Запустить таймер немедленно sudo systemctl start backup.timer # Просмотр статуса и следующего времени срабатывания systemctl status backup.timer # Просмотр логов выполнения задачи journalctl -u backup.service
Типичные сценарии в DevOps: планирование очистки логов, запуск синхронизации конфигураций, выполнение периодических health-чеков и отправка метрик.