設定 Crontab 指定收件人 或 不自動寄信

Crontab 只要執行有 輸出文字 的話, 預設就會將 輸出的文字 寄出來. (註: 空白也是文字)

不過, 今天 Debian Linux 升級完後, 突然連 程式回傳的狀態碼 也會寄信, 這就有點困擾, 信件內容如下:

Subject: Cron <user@web> flock -w 0 /tmp/xxx -c "/usr/bin/irc.py &" (failed)
command failed with exit status 1

主要是內容會印 command failed with exit status 1 的訊息, 但是這個訊息從哪來?

看來像是 flock (failed) 的結束狀態的回傳值, 但是 flock 就是要解決程式重覆執行的問題, 回傳 failed 是正常的.

正常的狀況, 每分鐘一封信的話, 是蠻困擾的, 所以先想辦法不讓 Crontab 寄信出來. 從 flock 著手似乎有困難, 直接從 crontab 比較簡單點.

設定 Crontab 不自動寄信

設定不自動寄信的方法有三種:

  1. 指定收件人為空: MAILTO="" # 缺點是, 若有帳號會統一收信, 那個帳號還是會爆.
  2. 將輸出結果導去 /dev/null: >/dev/null 2>&1
  3. 將輸出結果導去 /dev/null: &> /dev/null

範例

  • */30 * * * *  /usr/bin/get_news.py &> /dev/null
  • */1 * * * *   flock -w 0 /tmp/xxx -c "/usr/bin/irc.py &" &>/dev/null 2>&1
  • */1 * * * *   flock -w 0 /tmp/mon -c "tail -5 /var/log/apache.log | /usr/bin/monweb.py" &> /dev/null

設定 Crontab 指定收件人

Crontab 的設定方式有兩種
  1. crontab -e
  2. vim /etc/crontab

於這兩種方式挑其一, 做下述設定即可:

相關網頁

作者: Tsung

對新奇的事物都很有興趣, 喜歡簡單的東西, 過簡單的生活.

發表迴響

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料