systemd-таймер вместо cron
Журнал и статус из коробки, пропущенные запуски и случайная задержка без обёрток.
Главный плюс таймеров — журнал и статус «из коробки»: видно, когда задача запускалась, с каким кодом завершилась и что написала. systemctl list-timers показывает следующий запуск без чтения crontab.
Минимальная пара файлов:
# /etc/systemd/system/backup.service
[Unit]
Description=Nightly backup
[Service]
Type=oneshot
ExecStart=/usr/local/bin/backup.sh
# /etc/systemd/system/backup.timer
[Unit]
Description=Nightly backup timer
[Timer]
OnCalendar=*-*-* 03:15
RandomizedDelaySec=10m
Persistent=true
[Install]
WantedBy=timers.target
Persistent=true запустит пропущенную задачу, если сервер был выключен в момент срабатывания. RandomizedDelaySec разносит одинаковые задачи на парке машин, чтобы они не били в хранилище одновременно.
systemctl enable --now backup.timer
systemd-analyze calendar "*-*-* 03:15"
Вторая команда проверяет выражение и показывает ближайшее время срабатывания.