為什麼我的 crontab 沒有運行

為什麼我的 crontab 沒有運行

我有這個計劃

38 * * * * /bin/bash -l -c 'cd /var/rails/site/releases/20120705144335 && script/rails runner -e qa '\''Play.load_lists'\'''

我在不同的用戶下有這個 cron,所以我切換用戶來部署

sudo su deploy
crontab -e

我看到我的 cron 然後我在 root 用戶下追蹤日誌

tail -n300 -f /var/log/syslog

我看到我的 cron

Jul  5 11:38:01 ip-10-70-75-234 CRON[4971]: (deploy) CMD (/bin/bash -l -c 'cd /var/rails/site/releases/20120705144335 && script/rails runner -e qa '\''Play.load_lists'\''')
Jul  5 11:38:01 ip-10-70-75-234 CRON[4970]: (CRON) info (No MTA installed, discarding output)

但是 cron 要么沒有運行,要么存在權限問題...當我在控制台中運行任務時,它工作得很好,但在 cron 中卻不行...知道我錯過了什麼嗎

這是 Ubuntu 12.04 LTS

也許我可以將更詳細的清單記錄到某個地方以查看錯誤

答案1

CRON 透過本機郵件傳送應用程式的輸出(stdout、stderr)。 Ubuntu 目前顯然沒有預設安裝 MTA(郵件傳輸代理程式)。每當交付失敗時,CRON 都會在系統日誌檔案中列印一條通知:

Jul  5 11:38:01 ip-10-70-75-234 CRON[4970]: (CRON) info (No MTA installed, discarding output)

您可以安裝 MTA,例如 postfix,僅供內部(本地)使用,例如

aptitude install postfix

在安裝過程中,系統會詢問您要使用什麼預設配置。您應該選擇Local only配置。

此後,您可以使用以下命令找到 CRON 運行的應用程式的輸出

tail -f /var/mail/<your_username>

當然,您也可以使用內建 shell 功能將日誌記錄輸出寫入專用日誌檔案或將輸出通過管道/重定向到檔案...

相關內容