Python

Cron 作業靜默失敗

  • June 23, 2013

我有一個要通過 crontab 執行的 python 腳本。我的 crontab 看起來像這樣:

5,20,35,50 * * * * /var/www/django-apps/callreport/util.py

該腳本設置為解析一堆平面文件並將資訊粘貼到 MySQL 數據庫中,然後刪除這些文件。它從命令行執行良好,數據被複製到數據庫,並刪除了平面文件。但是當設置為作為 cron 作業執行時,什麼也沒有發生。

過去,當 cron 作業失敗時,我會收到一封郵件消息,但我沒有收到任何回饋,而且我仍然在通過成為這個盒子的系統管理員來摸索。我究竟做錯了什麼?

“cron”作業的常見問題是它們的環境為零 - 不像“at”作業會複製您的環境。當某些東西通過命令行而不是’cron’起作用時,我的經驗是’環境’是最常見的問題之一。偶爾你會遇到另一個問題——“cron”作業不是用終端執行的,有時程序會對此感到草率。然而,這在 1% 的範圍內,而環境問題為 99%。

我使用的另一個關鍵技術是始終從“cron”執行 shell 腳本;shell腳本確保環境設置正確,然後執行真正的程序。如果“cron”工作給我帶來了問題,我可以調整腳本來做一些有用的事情,比如:

{
   date
   env | sort
   set -x
   ...what was there before adding the debug...
} >/tmp/cron.jobname.$$ 2>&1

這會將所有輸出(標準輸出和標準錯誤)重定向到文件名。如果您更喜歡程序 ID,則可以在文件名中建構時間戳。分析日誌文件通常會迅速發現問題。

引用自:https://serverfault.com/questions/55651