2011-04-05 39 views
1

我使用CakePHP 1.3,我是能夠成功地能夠建立cron作業使用是在CakePHP Book.CakePHP的殼牌克朗電子郵件錯誤

*/5 * * * * /full/path/to/cakeshell myshell myparam -cli /usr/bin -console /cakes/1.2.x.x/cake/console -app /full/path/to/app >> /path/to/log/file.log 

此給出的例子運行殼的結果輸出到日誌文件,但我想在發生錯誤時收到電子郵件,以便我可以嘗試解決問題。 我嘗試了以下,沒有運氣。

  1. 如果我刪除>> /path/to/log/file.log,那麼即使成功運行也會通過電子郵件發送。
  2. >/dev/null,我的假設是它會發送一個成功/ dev/null和錯誤的電子郵件。
  3. 1>的/ dev/null,則嘗試任何幫助表示讚賞的2

另一變型。

感謝

回答

0

玉山,

這不是一個CakePHP的錯誤,那麼,和也許是一個問題爲serverfault更適合,因爲你將腳本您的解決方案。

Bash的內置工具可以完成任務,嘗試使用The linux documentation project's簡潔的shell腳本入門教程和#man bash

您的解決方案基本上必須使用臨時文件或變量來存儲最後一個cron作業運行的輸出。如果有一個錯誤:

cat THE_TMP_FILE | mail -s "Error from Server Huseyin's server" [email protected]_domain.com

其他: cat THE_TMP_FILE >> blah.blah.log

不幸的是,你需要一個MTA可用,爲了使mail命令。如果您無法訪問mail命令,那麼您在第一個時間點之後設置另一個cron作業,然後運行一個if [ -e THE_FILE_CONTAINING_THE_LAST_ERROR]; then { echo $(cat THE_FILE_CONTAINING_THE_LAST_ERROR); rm -v THE_FILE... ;} ; fi

當然,這不是工作代碼,但非常接近,所以您將獲得理念。

+0

我會嘗試一下,讓你知道它是否工作。謝謝 – Huseyin 2011-04-07 12:46:28

+0

當你嘗試使用shell時,似乎CakePHP會輸出一些東西,所以沒有簡單的方法來獲取失敗的郵件。 – Huseyin 2011-05-03 19:20:18