← TechNotes

@reboot и таймеры: кто просыпается после перезагрузки

5 октября 2026

Классическая пятничная история: сервер перезагрузили в ночь, а «ежедневная» задача не запустилась и не запустится до утра. Разложить по полкам:

crontab -l | grep '@'          # что вообще переживает reboot
systemctl list-timers --all    # что догоняет: NEXT / LAST / PASS

@reboot стартует в момент старта cron — сети ещё может не быть. Костыль «@reboot sleep 60 && ...» работает до первого медленного DHCP. Честное решение — таймер с After=network-online.target и Persistent=true, который догоняет пропущенное сам.

У Persistent=true есть обратная сторона: после долгого простоя прилетает пачка догонов. Для задачи «раз в сутки» это ок, для «раз в десять минут» — удар по диску. Считайте пропущенные срабатывания.

И мелочь, которая экономит нервы: RandomizedDelaySec=5m — иначе десять машин с одним кронтэйром бьют в прод на ровном месте ровно в 3:00.

← назад