Cron 指南
指南

Cron 任务不执行时:日志与调试

捕获输出·MAILTO·日志检查清单

cron 即使失败通常也会悄无声息地略过。如果用本工具确认表达式正确、任务却不运行,那么问题很可能不在表达式,而在执行环境。下面按顺序整理缩小原因范围的方法。

将输出留存到文件。cron 默认会把任务的标准输出·标准错误以邮件发送,但若未配置邮件,它们就会直接消失。在命令后加上 >> /var/log/myjob.log 2>&1,将 stdout 和 stderr 都留存到日志文件,就能立即确认发生了什么。

用 MAILTO 接收通知。在 crontab 顶部放置 MAILTO="you@example.com",任务的输出·错误就会转发到该地址。这是防止静默失败最简单的保险措施。反之若不想收邮件,就用 MAILTO="" 置空。

查看系统日志。Debian·Ubuntu 系列用 grep CRON /var/log/syslog,systemd 环境用 journalctl -u cron(或 crond)确认 cron 是否触发了任务。这里的关键区分是:「是否尝试执行」与「脚本是否成功」是两回事。

最后是常见原因检查清单。① 是否将所有命令·文件都指定为绝对路径 ② 是否在 crontab 中声明了所需的 PATH ③ 脚本是否具有执行权限(chmod +x)④ 是否把任务放进了正确用户的 crontab(root 与普通用户的 crontab 是分开的)。确认这四点后,表达式本身请用本解读器再次验证。

资源

调度合集

复制即用的配方

语法速查表

一览 5 个字段与特殊字符

宏·别名

如 @daily 的简写表达

指南

真正理解 cron 并减少错误的实战指南