Cron
除非出現錯誤,否則禁用 cron 電子郵件?
如果有錯誤,我怎樣才能只接收來自 cron 的電子郵件?
在絕大多數情況下,任務會執行得很好——我真的不關心輸出。
只有在極少數情況下我想/需要知道失敗的情況。
我有可用的procmail - 但不確定我所描述的內容是否可以“正確”地從外部管理到 cron。
由於您不關心輸出,您可以將作業的 STDOUT 重定向到
/dev/null
並讓 STDERR 通過郵件發送(使用MAILTO
環境變數)。因此,例如:
... ... MAILTO=foobar@example.com ... ... * * * * * /my/script.sh >/dev/null
當僅在 STDERR(使用 STDERR)上有輸出時將發送郵件,並將丟棄 STDOUT。
這當然假設當一個程序寫在 STDERR 上時,已經失敗;情況可能並非總是如此。如果您可以控制該程序,則可以讓它這樣做。對於任何復雜的情況,您應該編寫某種包裝器來執行命令並相應地發送郵件。並將包裝器作為
cron
工作。
chronic
來自moreutils的命令會安靜地執行命令,除非它失敗。引用其手冊:
慢性執行命令,並安排其標準輸出和標準錯誤僅在命令失敗(退出非零或崩潰)時顯示。如果命令成功,任何無關的輸出都將被隱藏。
慢性的一個常見用途是執行一個 cron 作業。與其試圖保持命令安靜,並且在成功時必須處理包含意外輸出的郵件,並且在失敗時沒有足夠詳細的輸出,您可以始終詳細地執行它,並使用慢性來隱藏成功的輸出。