2012年5月8日 星期二

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

由於今天遇到freebsd內的排程一直在丟出訊息

由於主要負責人請休假,當下是先將該排程註解掉

等負責人回來後再討論要怎麼處理這隻程式造成的問題

討論過程就不註記了,
最後使用
http://blog.longwin.com.tw/2010/05/crontab-not-send-mail-mailto-2010/
這邊所描述的方法,將訊息處理掉

--

設定 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
於這兩種方式挑其一, 做下述設定即可:
  • 若要指定收件人, 只要於最上面寫 MAILTO="xxx@example.com" 即可. (把整個檔案當成一個 bash file 即可)
  • 同理也可以設定 PATH=/usr/bin ... 等.

--

另外,crontab -e 與 vi /etc/crontab 的差異如下:
crontab -e :使用者自訂之排程(包含root),故如果有訊息寄出會寄信通知該使用者。
/etc/crontab :為系統層級。