用心打造
VPS知识分享网站

关机错过备份时间,如何让systemd定时器开机补跑?

VPS关机时错过凌晨备份,开机后还要等到第二天?对按日历运行的systemd定时器,可让它记住上次触发时间,并在重新激活时处理漏掉的计划。

时钟与服务器恢复后启动一次计划任务的示意图

先确认触发类型

用systemctl cat backup.timer查看实际配置,并用systemctl list-timers --all backup.timer看下一次触发。Persistent只对OnCalendar生效,单用OnBootSec或OnUnitActiveSec不能靠它补日历计划。

为日历定时器开启持久记录

在sudo systemctl edit backup.timer中加[Timer]和Persistent=true,分别独立成行;保留既有OnCalendar。示例日历表达式是*-*-* 03:00:00。确认服务名和服务器时区,用systemd-analyze calendar "*-*-* 03:00:00"检查表达式。

理解开机时实际会做什么

如果停用期间至少错过一次触发,重新激活定时器会安排补跑,仍受RandomizedDelaySec影响。错过三次不会因此补执行三次。它记录触发时间,不证明服务成功;失败重试要由服务和备份程序单独处理。

启用前检查备份目的地

先确认磁盘挂载、凭据和空间;必须挂载的目录可在服务单元评估RequiresMountsFor。启用可能触发实际备份,生产环境应安排窗口。执行sudo systemctl daemon-reload后重启已启用的timer;若未启用则按需执行sudo systemctl enable --now backup.timer。

用日志和产物验收

在萤光云或LightNode的独立实例用无副作用的测试服务验证:先触发一次,停timer跨过下一计划点,再启动。查看journalctl -u backup.service -b与下一触发时间。生产验收还要检查备份是否能读取或恢复,不能只看timer显示active。

FAQ

关机一周会逐日补吗? 不会,补跑不会回放每个错过的触发点。

补跑一定马上执行吗? 可能受随机延迟等设置影响。

能替代失败重试吗? 不能,触发和服务成功是两件事。

旧版能照搬吗? 用本机man systemd.timer核对发行版支持。

可以先停生产timer来试吗? 优先用独立测试单元,避免丢掉真实计划。

温馨提示

备份任务应能安全重复执行。验证时使用独立输出目录,避免覆盖现存备份。

赞(0)
未经允许不得转载;国外VPS测评网 » 关机错过备份时间,如何让systemd定时器开机补跑?
分享到