systemd-таймеры: cron больше не нужен
Как переехать с cron на таймеры systemd и получить логи, зависимости и докрутку пропущенных запусков.
Раньше на каждой машине первым делом настраивал cron. Теперь просто пишу два юнита: таймеры пишут логи в journalctl, умеют зависимости через After= и главное — с Persistent=true догоняют пропущенный запуск, если машина была выключена.
Минимальный набор из двух файлов:
# /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=Run backup nightly
[Timer]
OnCalendar=*-*-* 03:30:00
Persistent=true
RandomizedDelaySec=300
[Install]
WantedBy=timers.target
Проверить расписание и заглянуть в логи:
systemctl list-timers
journalctl -u backup.service -n 50
Грабли: после правки юнитов не забывайте systemctl daemon-reload, а RandomizedDelaySec полезен, когда таймеров много и все они хотят стартовать ровно в 03:00.