我在 Cpanel 中设置了一个每分钟运行一次的 crontab。它运行良好,但我不想每分钟都收到一封电子邮件。我有一个每天运行的第二个 cron 选项卡。我希望这个选项卡能够响应。有没有办法让 crontab 保持静默或仅在出现错误时发送电子邮件?
我有:
* * * * * php /home/public_html/folder/file.php 2>&1
我添加了最后一点,2>&1
因为我认为它会使它变得安静。
来自 Cpanel 文档:
您可以让 cron 每次运行命令时都发送电子邮件。如果您不想为单个 cron 作业发送电子邮件,您可以将命令的输出重定向到 /dev/null,如下所示:mycommand >/dev/null 2>&1
答案1
使用-q
它表示“安静”,因此不会产生输出
* * * * * php -q /home/public_html/folder/file.php
另外,问问自己为什么要每分钟运行它,这有点过分。
答案2
2>&1
将写入 stderr 的所有内容重定向到 stdout
>/dev/null
将标准输出重定向到 /dev/null
cron 会始终通过电子邮件向您发送发送到 stdout 或 stderr 的任何内容,除非重定向到其他地方。理想情况下,您的 PHP 脚本应该重写为接受 --quiet 标志,这样就不会将一大堆无用的垃圾写入 stdout,然后您可以在 cron 作业中使用它们。
懒人的选择是包装脚本围绕你的 cron 作业,除非你的命令以非零值退出,否则它将阻止你向其发送电子邮件。
答案3
正确的设置是
>/dev/null
这将忽略标准输出,并且仅在发生错误时才向您发送电子邮件
您当前的设置无法处理标准输出,因此每次运行时您都会收到一封电子邮件。