归档日期:2026-10-27;补录发布:2026-10-28。
脚本手动执行成功,到了定时任务却失败。Cron 的用户、工作目录和环境变量,与登录终端时可能不同,排查应从这些差异开始。
一行计划怎么读
用户 crontab 是“分 时 日 月 周 命令”。每天凌晨三点执行备份:
0 3 * * * /opt/backup_secure.sh/etc/crontab 和 /etc/cron.d/ 文件通常还需要写执行用户,不能与用户 crontab 格式直接混用。
使用明确路径
交互式终端能找到的命令,Cron 的 PATH 未必包含。相对路径也可能落到意料之外的位置。脚本应使用明确路径,或设定可控 PATH,检查关键目录。
head -n 1 /opt/backup_secure.sh
ls -l /opt/backup_secure.sh
crontab -l
systemctl status crond --no-pager分别确认解释器、权限、计划与调度服务。crond 是 Rocky 常见服务名,其他发行版可能不同。
调度成功不代表备份成功
调度日志说明命令被启动,脚本却可能在数据库连接时失败。还要检查脚本日志、退出码和备份产物。
本站脚本有自己的日志,修改计划前先确认输出处理,避免把所有错误丢进 /dev/null。不要只看备份文件名就认定任务完成。
任务重叠与百分号
运行时间较长时,下一轮可能再次开始。需要互斥可以考虑 flock,但要确认锁路径和权限;Cron 不会自动等待上轮结束。
命令字段中未转义的百分号有特殊含义,使用 date 格式串时尤其注意。复杂逻辑放进脚本,让计划只负责调用,通常更好维护。
固定排查顺序
先看时间和用户,再查服务、计划语法、路径和权限,最后看脚本错误。手工测试尽量模拟相同用户和环境。
验收目标是按计划运行、结果完整且失败可发现,不只是把五个星号写进文件。
补上可直接查看的日志入口
Rocky 可用 journalctl -u crond --since '1 day ago' --no-pager 辅助确认调度活动,实际是否写入传统 cron 日志取决于日志配置。任务若需要固定时区先核对调度器支持与系统时区。使用 flock 时同时明确锁竞争是跳过还是报错,并记录结果;不要默认一次没有产物就是调度器故障。
内容复核与修订:2026-10-29。实验示例与本站运行记录分别说明;原始归档日期保留。
评论 (0)