如何让 php crontab 静默运行

如何让 php crontab 静默运行

我在 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

这将忽略标准输出,并且仅在发生错误时才向您发送电子邮件

您当前的设置无法处理标准输出,因此每次运行时您都会收到一封电子邮件。

相关内容