如何讓 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將 stdout 重新導向到 /dev/null

cron 總是會透過電子郵件向您發送發送到 stdout 或 stderr 的任何內容,除非重定向到其他地方。理想情況下,您的 PHP 腳本應該被重寫以接受 --quiet 標誌,該標誌不會將一大堆無用的垃圾寫入 stdout,然後您可以在 cron 作業中使用它們。

懶人的選擇是放一個包裝腳本圍繞你的 cron 作業,這將阻止它向你發送電子郵件,除非你的命令以非零值退出。

答案3

正確的設定是

>/dev/null

這使得標準輸出被忽略,並且僅在出現錯誤時向您發送電子郵件

您目前的設定無法處理標準輸出,因此每次執行時您都會收到一封電子郵件。

相關內容