定时任务到点没执行:cron 排查的四个常见原因

举报
yd_253564366 发表于 2026/10/15 01:37:33 2026/10/15
【摘要】 脚本手动执行一切正常,配成定时任务后却到点没动静,日志里什么都没有。cron 最麻烦的地方就是不报错给你看:手动跑和定时跑是两套环境,手动通过证明不了定时没问题。第一步,先分清是没触发还是触发了但失败。用 grep CRON 查系统日志,或看 journalctl -u cron 的记录。有执行记录,说明触发正常,重点查脚本报错;完全没有记录,先查服务和任务定义本身。第二步,查基础项。执行 ...

脚本手动执行一切正常,配成定时任务后却到点没动静,日志里什么都没有。cron 最麻烦的地方就是不报错给你看:手动跑和定时跑是两套环境,手动通过证明不了定时没问题。

第一步,先分清是没触发还是触发了但失败。用 grep CRON 查系统日志,或看 journalctl -u cron 的记录。有执行记录,说明触发正常,重点查脚本报错;完全没有记录,先查服务和任务定义本身。

第二步,查基础项。执行 systemctl status cron 确认服务在运行,再用 crontab -l 确认任务写在当前用户的任务表里——crontab 按用户隔离,用 root 配的任务不会出现在普通用户那里。另外注意时间五列是分、时、日、月、星期,别写反;还要用 date 核对服务器时区,云服务器默认可能是 UTC,看着没跑,其实跑在了差 8 小时的时间点上。

第三步,查环境差异,这是占比最高的原因。cron 只给极简环境:命令要写绝对路径,文件不要用相对路径,需要的变量在脚本里自己写明,不能依赖登录终端里的别名和配置。

第四步,让错误留痕。配任务时把输出重定向到日志文件,如在命令后加 >> /var/log/myjob.log 2>&1,下次失败打开日志看第一条报错,基本就是答案。顺带检查脚本有执行权限、命令里的 % 已转义。

把路径写全、把输出留痕,这两个习惯装上,这类故障几分钟就能定位。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。