
我在 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
這使得標準輸出被忽略,並且僅在出現錯誤時向您發送電子郵件
您目前的設定無法處理標準輸出,因此每次執行時您都會收到一封電子郵件。