Debian cron 任务没有执行?
cron 任务不执行,排查顺序:服务是否在跑 → 任务文件位置对不对 → 脚本本身有没有跑通。本文按此给可复现路径。
简短答案
cron 不执行,90% 落在三处:cron 服务没起、任务写错了文件(/etc/cron.d/ vs /var/spool/cron/)、脚本没可执行权限或 shebang 缺失。排查顺序固定:systemctl status cron → crontab -l 确认任务真的在用户 crontab 里 → 手动跑脚本看报错。
现象对照
| 现象 | 判断 |
|---|---|
| 任务从没跑过 | 服务没起 / 任务写错文件 |
| 跑过但没输出 | 脚本静默失败(shebang 缺失等) |
| 只在开机时跑过 | 系统时间错乱(见 NTP 条目) |
排查步骤
sudo systemctl status cron
crontab -l # 当前用户
sudo crontab -l # root
ls /etc/cron.d/ /var/spool/cron/
# 手动跑脚本验证
/path/to/script.sh
grep -i cron /var/log/syslog
任务写进 /etc/cron.d/ 时格式多一列用户名,写错就静默不执行;脚本第一行必写 #!/bin/bash,路径用绝对路径(cron 环境极简,PATH 很短)。服务与 cron 语法说明以 Debian 13.7 DVD 发行文档为准;Debian 13.7 网络安装版 基线同样适用,见 Debian 发行条目。
操作小结
- 先
systemctl status cron,服务没起什么都是白搭 - 确认任务写对了文件,/etc/cron.d 要带用户名列
- 脚本 shebang + 绝对路径,手动先跑通
grep cron /var/log/syslog看有没有静默报错