systemd-таймер вместо cron

Журнал и статус из коробки, пропущенные запуски и случайная задержка без обёрток.

· 2 мин

Главный плюс таймеров — журнал и статус «из коробки»: видно, когда задача запускалась, с каким кодом завершилась и что написала. 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"

Вторая команда проверяет выражение и показывает ближайшее время срабатывания.

logbookdev — записки инженера эксплуатации. Нашли неточность или знаете способ лучше — значит, будет следующая запись.

Ещё по теме

Архив →