Cron 任务不生效是非常常见的问题,通常由以下几类原因导致。你可以按顺序排查:
最常见原因
# 查看 cron 服务状态
systemctl status cron # Debian/Ubuntu
systemctl status crond # CentOS/RHEL
如果没有运行:
systemctl start cron
systemctl enable cron
常见错误:
0 0 0 * *(其实是每天 0 点,没问题,但容易误以为“不生效”)*/60 * * * *(应为 0 * * * *)快速验证语法:
crontab -l
Cron 的环境变量极少,经常导致脚本“手动能跑,Cron 不行”。
✅ 建议在脚本中:
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
或在 crontab 中:
* * * * * export PATH=/usr/bin:/bin; /path/to/script.sh
Cron 默认会把输出邮件发给用户,很多系统没配置邮件,你以为没跑。
✅ 建议重定向日志:
* * * * * /path/to/script.sh >> /var/log/mycron.log 2>&1
然后看日志:
tail -f /var/log/mycron.log
chmod +x /path/to/script.sh
查看当前用户的 cron:
crontab -l
查看系统级 cron:
ls /etc/cron.d/
cat /etc/crontab
Cron 执行时:
~ 可能不是你以为的用户✅ 明确指定用户:
* * * * * www-data /path/to/script.sh
CentOS/RHEL 常见:
getenforce
脚本第一行必须正确:
#!/bin/bash
否则 Cron 不知道用什么解释器。
如果你愿意,可以把:
发出来,我可以直接帮你定位是哪一条原因。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。