Компания «ЛинуксОпс» — 80 серверов, 200+ cron-задач. Проблемы с cron:
- Нет логирования — вывод cron теряется (если не настроен MAILTO)
- Нет зависимостей — cron не знает, что задача A должна завершиться перед задачей B
- Нет retry — если задача упала, cron не перезапустит её
- Нет мониторинга — невозможно узнать, работает ли задача прямо сейчас
Systemd таймеры решают все четыре проблемы и полностью заменяют cron.
# /etc/systemd/system/backup-db.service
[Unit]
Description=Database backup
After=postgresql.service
[Service]
Type=oneshot
ExecStart=/opt/scripts/backup-db.sh
User=postgres
Nice=10
IOSchedulingClass=idle
# /etc/systemd/system/backup-db.timer
[Unit]
Description=Daily database backup at 3:00 AM
[Timer]
OnCalendar=*-*-* 03:00:00
RandomizedDelaySec=600
Persistent=true
[Install]
WantedBy=timers.target
# Активация
systemctl enable --now backup-db.timer
# Список всех таймеров
systemctl list-timers --all
# Статус и логи
systemctl status backup-db.timer
systemctl status backup-db.service
journalctl -u backup-db.service --since today
# Запуск вручную (для тестирования)
systemctl start backup-db.service
Persistent=true — если сервер был выключен во время запланированного запуска, таймер сработает при следующей загрузке. Cron такое не умеет (кроме anacron).
Комментарии 0