设置的每日备份任务到了时间没有任何输出,手动执行却成功。乍看像缓存或者权限的锅,追下去往往不是。

date
timedatectl
# 任务
/usr/bin/bash /www/backup/run.sh >> /www/backup/run.log 2>&1

追下去是这么回事:服务器时区与预期不一致,任务实际在另一个时间点执行,或脚本路径依赖登录环境。

碰到「计划任务不执行」这类问题,我习惯先把当前配置原样备份一份,改坏了立刻换回来,不用现场推。验证用真实数据走一遍,测试数据太干净,边界情况根本碰不到。

能分两步做的操作就别合成一步,中间看一眼返回值,出问题好判断。报错里带路径的,先去看那个路径在不在、权限对不对。

同一份配置存在多处的,先确认改的是被加载的那一份。新版本先放一台机器上跑一天再全量,问题一般在这段时间暴露。

备份不是备了就行,恢复一次才算数,很多备份文件打开才发现是空的。

具体做法是,核对系统时区;在任务中使用绝对路径;把输出写入日志便于确认。

验收就看一点,任务在预期时间执行,日志中有记录。

作者 9823189