TIL — перевёл задачи с cron на systemd timers

Долго держал все периодические задачи в crontab по привычке. На днях надоело и перевёл их на systemd timers. Записываю плюсы, чтобы потом не гуглить то же самое.

Что мне в итоге понравилось:

Минимальная пара файлов. Сервис в /etc/systemd/system/backup.service:

[Unit]
Description=Ночной бэкап
After=docker.service

[Service]
Type=oneshot
ExecStart=/app/scripts/backup.sh

Таймер рядом, backup.timer:

[Unit]
Description=Запуск бэкапа раз в сутки

[Timer]
OnCalendar=*-*-* 03:30:00
Persistent=true

[Install]
WantedBy=timers.target

Включается так:

sudo systemctl daemon-reload
sudo systemctl enable --now backup.timer
systemctl list-timers

list-timers сразу показывает, когда следующий запуск и когда был прошлый — очень удобно, в cron такого обзора из коробки нет. Единственное, к чему привыкаешь: один таск — это два файла вместо одной строки. Для пары задач это перебор, но когда задач десяток и хочется логи и порядок — оно того стоит.