systemd timers вместо cron
Как запускать задачи по расписанию с журналом, зависимостями и ограничениями.
· 6 мин чтения
Зачем таймеры
Таймер запускает связанную службу, поэтому вывод попадает в journald, работают зависимости и ограничения ресурсов. Cron проще, но не даёт этих возможностей.
Служба и таймер
# /etc/systemd/system/backup.service
[Unit]
Description=Копия конфигураций[Service] Type=oneshot ExecStart=/usr/local/bin/backup-configs.sh
# /etc/systemd/system/backup.timer
[Unit]
Description=Ежедневная копия конфигураций[Timer] OnCalendar=*-*-* 03:00:00 Persistent=true RandomizedDelaySec=300
[Install] WantedBy=timers.target
Запуск
sudo systemctl daemon-reload
sudo systemctl enable --now backup.timer
systemctl list-timers
sudo systemctl start backup.serviceОсобенности
Persistent=true запускает пропущенную задачу после включения машины. systemd-analyze calendar "Mon *-*-* 03:00" проверяет выражение расписания до применения.
Диагностика
journalctl -u backup.service --since today
systemctl status backup.timer.timer, а не .service.Вывод
Для регулярных задач на современном Linux таймеры дают журнал, управляемость и предсказуемость. Начните с одной задачи и проверяйте её вручную командой start.
Связанные статьи
Как устроены службы systemd
Что происходит при запуске service: unit-файлы, зависимости, перезапуск и диагностика.
Основы мониторинга VPS
Какие метрики следить в первую очередь и как быстро найти узкое место.