cron 的问题在于失败时什么都不会发生。没有页面宕机,没有错误提示;只是当你需要备份时,它不在那里。
心跳模式
为每个任务分配一个唯一 URL。任务成功时调用它。监控器期望每 N 小时收到一次调用;如果迟到,你就会收到告警。
Cron
0 3 * * * /usr/local/bin/backup.sh && curl -fsS -m 10 https://hb.uptimepush.com/p/TOKENsystemd 定时器
在服务单元中添加 ExecStartPost=/usr/bin/curl -fsS https://hb.uptimepush.com/p/TOKEN。
Kubernetes CronJob
用 && 将 curl 调用追加到容器命令之后,这样它只在成功时运行。
GitHub Actions
添加最后一个步骤来 curl 该 URL,并将令牌存储为 secret。
宽限期
将宽限期设置得略长于任务正常运行的最长时间,这样偶尔跑得慢一点也不会在深夜把你叫醒。