systemd-таймеры вместо cron: короткая шпаргалка
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".