CentOS 定时器故障排查与修复
一、快速自检清单
二、定位问题的关键日志与命令
三、常见故障与修复对照表
| 症状 | 可能原因 | 快速修复 |
|---|---|---|
| 任务未按点运行 | crond 未启动或未开机自启 | systemctl start crond;systemctl enable crond |
| 修改后短期内不执行 | 新任务通常需等待约2–3 分钟才生效 | 等待片刻或重启 crond 后再观察 |
| 脚本手动可跑,定时不跑 | 环境差异(PATH、工作目录、SHELL) | 在脚本中显式设置环境,如 source /etc/profile;在 crontab 中使用绝对路径 |
| 命令或脚本找不到 | 未使用绝对路径或命令不在默认 PATH | 在 crontab 中写全路径,如 /usr/bin/python3 /opt/script.py |
| 权限被拒 | 脚本无执行权限或 /var/spool/cron 权限异常 | chmod +x script.sh;检查并修复 /var/spool/cron 权限/属性 |
| 日志看不到执行记录 | 系统未记录 cron 日志 | 确认 rsyslog 配置包含 cron 日志,重启 rsyslog 后再看 /var/log/cron 或 /var/log/messages |
| 时区导致“到点未跑” | 系统时区设置不正确 | timedatectl set-timezone <区域>;date 校验 |
| 重复执行或“假死” | 上一次任务未退出,定时又启动新进程 | 脚本内做单实例锁或确保进程能正常退出 |
| 特殊字符导致语法错误 | 在命令行中 % 有特殊含义 | 在 crontab 中写成 %,如 date ‘+%Y%m%d’ |
四、一个最小可工作的示例
五、仍未恢复时的建议