首页/系统/Linux 运维命令速查/场景:cron 任务不执行 8 步排查
本包目录(613 条)
文件与目录76 条文本处理77 条网络命令82 条进程与作业69 条磁盘与文件系统51 条用户与权限44 条日志与排查40 条systemd 与服务42 条包管理34 条性能与监控48 条
定时任务与计划50 条

场景:cron 任务不执行 8 步排查

从「有没有被触发」到「触发后为何失败」逐层排查:服务状态、日志、格式、权限、环境、命令路径、脚本执行位、输出重定向。

Linux 运维命令速查系统更新于 2026-10-12
场景任务到点没动静
方法分层验证:先触发、后执行、再结果
输出每步可复制命令

第 1-4 步:触发链

第 1-4 步:触发链
systemctl is-active cron 2>/dev/null || systemctl is-active crond   # 1 服务在跑?
sudo grep CRON /var/log/syslog | tail -n 5                             # 2 日志见触发?
sudo journalctl -u cron --since '30 min ago' | tail -n 5                # 3 journal 兜底
crontab -l | cat -A | sed -n '1,20p'                                   # 4 有无 ^M 与语法错(cat -A 看隐藏字符)

第 5-8 步:执行链

第 5-8 步:执行链
sudo ls -l /var/spool/cron/crontabs/root                                # 5 任务表存在且权限对?
env -i PATH=/usr/bin:/bin /bin/sh -c '/opt/app/job.sh; echo rc=$?'     # 6 空环境手动跑
ls -l /opt/app/job.sh                                                  # 7 执行位与 shebang
bash -x /opt/app/job.sh 2>&1 | tail -n 30                               # 8 带追踪复跑
常见根因排序:PATH/环境(40%)、权限与执行位(20%)、语法与隐藏字符(15%)、依赖未就绪(15%)、其它。

易错点

  • Windows 编辑后上传的 crontab 带 CRLF(cat -A 显示 ^M),任务会被静默忽略或报错
  • 「日志没有」≠「未触发」:先区分日志系统是否完整(Ubuntu 无 syslog 时看 journal)

数据来源与参考

  • man 5 crontab(环境与语法)
  • RHEL 文档:cron 故障排查
  • Debian cron 文档

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌