systemd-таймеры вместо cron: короткая шпаргалка

14 октября 2026 · 5 минут

Cron никуда не денется, но у таймеров есть приятные плюсы: логи сразу в journald, зависимости между юнитами, ограничения ресурсов и запуск пропущенных заданий после перезагрузки.

Сервис

# /etc/systemd/system/backup.service
[Unit]
Description=Nightly backup

[Service]
Type=oneshot
ExecStart=/usr/local/bin/backup.sh
Nice=10

Таймер

# /etc/systemd/system/backup.timer
[Unit]
Description=Run backup every night

[Timer]
OnCalendar=*-*-* 03:30
RandomizedDelaySec=15m
Persistent=true

[Install]
WantedBy=timers.target

Persistent=true запускает задание при старте, если машина была выключена в момент срабатывания. RandomizedDelaySec полезен, когда одинаковые таймеры стоят на десятках серверов.

Проверка

systemctl daemon-reload
systemctl enable --now backup.timer
systemctl list-timers
journalctl -u backup.service -n 50

Проверить выражение OnCalendar заранее можно командой systemd-analyze calendar "*-*-* 03:30".