crontab 定时任务不执行
Linux系统
2026-10-03 05:47
3
手敲能跑,定时不跑,九成是环境变量或路径问题。命令都会敲,差别在于知不知道每一步在改什么,出问题能不能退回去。
下面按“先判断范围、再处理、最后防复发”的顺序展开,涉及 crontab、定时任务 的关键动作都给了具体做法,可以照着走。
环境差异
cron 的 PATH 很短,脚本里用绝对路径。
出现异常先回退到上一个已知可用状态,再慢慢找原因。
输出重定向
加 >> /tmp/task.log 2>&1 才有日志可查。
容易踩的坑:最容易出问题的是细节不一致:版本、路径、参数任意一处对不上,现象就和预期差很远。
权限
root 的 crontab 与用户 crontab 是两套。
这一步的判断依据建议写进操作记录,下次直接照做,不用重新摸索。
排查
看 /var/log/cron 是否真的触发了。
速查表
| 环节 | 关键动作 |
|---|---|
| 环境差异 | cron 的 PATH 很短,脚本里用绝对路径 |
| 输出重定向 | 加 >> /tmp/task.log 2>&1 才有日志可查 |
| 权限 | root 的 crontab 与用户 crontab 是两套 |
| 排查 | 看 /var/log/cron 是否真的触发了 |
常见问题
Q:crontab这类问题,最快的判断办法是什么?
先确认现象的范围:只有单台还是全部、只在某个时段还是持续。范围一缩小,原因基本就浮出来了。
Q:按文中的步骤做完,还需要注意什么?
把处理过程和最终生效的参数记下来。同类问题再出现时直接对照记录,比重查一遍快得多。
小结
回到这篇的四个环节:环境差异、输出重定向、权限、排查。命令行操作贵在可复现:把有效的命令记进运维笔记,比记在脑子里靠谱。