我在 crontab 中遇到了一个奇怪的问题。我已正确设置 crontab 以运行 cron 作业,如下所示:
[user@user ~]$ crontab -e
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
[email protected]
HOME=/
2 * * * * php usr/share/nginx/html/site/script.php
脚本运行了,我知道这一点是因为该脚本只是一个基本测试,它使用 mail() 函数让我知道它已运行。
但是我没有收到来自 crontab 的电子邮件,让我知道脚本已经运行。我应该收到一封发送到上述 MAILTO 地址的输出电子邮件,但我没有收到。我甚至尝试过在地址周围加上引号。
Sendmail 没有任何问题,否则脚本将无法发送电子邮件。电子邮件地址也没有问题,因为 script.php 中的 mail() 代码会发送到相同的电子邮件地址。
从技术上讲,我可以通过这种方式自己发送电子邮件输出,而不是依赖 crontab,但我知道这不是正确的方法。
知道我哪里错了吗?
PS. 这是一台 Centos 6.3 服务器。
答案1
您可以做的是删除该 MAILTO,然后使用根转发器。
/root/.forward
<- 只需将您的电子邮件放在那里,无需其他内容。假设您以 root 身份运行 cron 作业。您也可以通过执行此操作/etc/aliases
,添加以下行:user: [email protected]
答案2
我会检查 cron 和邮件日志,看看是否有任何错误报告。是否也可能是电子邮件落入了垃圾邮件文件夹,或者收件人邮件服务器因发件人姓名或主机名无效等原因拒绝了该邮件?