Cron

防止 cron 發送錯誤消息

  • December 19, 2019

我已將 cron 設置為每 15 分鐘為使用者 pi 執行一個任務(在我的 Raspberry Pi 上執行 Raspbian Stretch)。

6,21,36,51 * * * * /usr/bin/mosquitto_sub -h Pi3Plus.local -v -C 1 -t weather >> weather.log

我還設置了 ssmtp 以通過 gmail 發送電子郵件。

cron 任務經常無法連接到伺服器,並生成錯誤消息。

問題是它然後嘗試向使用者 pi 發送一條消息,該 ssmtp 更改為 pi@gmail 並發送到 gmail,但它失敗了。

我已經閱讀了 ssmtp、ssmtp.conf、cron、crontab 的手冊,但找不到任何東西來阻止這些消息。

我可以編寫一個腳本來擷取 cron 任務中的錯誤消息,以防止它產生錯誤。

crontab 手冊

除了 LOGNAME、HOME 和 SHELL,如果在“this”crontab 中執行命令,cron(8) 有任何理由發送郵件,它還會查看 MAILTO。如果 MAILTO 已定義(且非空),則將郵件發送給如此命名的使用者。**如果 MAILTO 已定義但為空 (MAILTO=""),則不會發送任何郵件。**否則,郵件將發送給 crontab 的所有者。

只需將變數添加到 crontab 文件的頂部,如本範例所示(取自同一手冊頁,為清楚起見稍作編輯):

# mail any output to 'paul', no matter whose crontab this is
MAILTO=paul
# run five minutes after midnight, every day
5 0 * * *       $HOME/bin/daily.job >> $HOME/tmp/out 2>&1

引用自:https://unix.stackexchange.com/questions/499397