2012-11-06 208 views
7

crontab無法執行Python腳本。我用來運行Python腳本的命令行沒問題。Crontab無法執行Python腳本

這些解決方案,我曾嘗試:

  • 在的main.py
  • 頂部添加#!/usr/bin/env pythoncrontab
  • chmod 777頂部添加PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/binmain.py文件
  • service cron restart

我的crontab是:

PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin 

*/1 * * * * python /home/python_prj/main.py 

和日誌在/ var/log/syslog的是:

Nov 6 07:08:01 localhost CRON[28146]: (root) CMD (python /home/python_prj/main.py) 

,別無其他。

main.py腳本調用python_prj下的其他模塊的一些方法,這是否重要?

任何人都可以幫到我嗎?

+0

你有沒有在你的cron命令中試過「/ usr/bin/env/python /home/python_prj/main.py」? – Tjaart

+1

也許你的腳本崩潰之前,它可以做任何事情做任何理由:缺乏權利,執行錯誤的密碼? – Tjaart

+0

我試過/ usr/bin/env/python,仍然沒有運氣 – yebw

回答

9

main.py腳本調用python_prj下的其他模塊的一些方法,這很重要嗎?

是的,它的確如此。所有模塊都需要在運行時找到。你可以用幾種方法來完成這個,但最合適的可能是在你的crontab中設置PYTHONPATH變量。

您可能還想在crontab中設置MAILTO變量,以便收到帶有任何回溯的郵件。

[更新]這裏是我的crontab的頂部:

www:~# crontab -l 

DJANGO_SETTINGS_MODULE=djangocron.settings 
PATH=... 
PYTHONPATH=/home/django 
MAILTO="[email protected]" 
... 
# m h dom mon dow command 
10-50/10 * * * *    /home/django/cleanup_actions.py 
... 

(運行清除操作每隔10分鐘,除了在一小時的頂部)。

+0

我不明白,我在命令行中鍵入「python /home/python_prj/main.py」,它的工作原理。 PYTHONPATH將被設置爲python'path或者模塊的路徑 – yebw

+0

python_prj下的所有模塊都是自定義的 – yebw

+0

我剛剛刪除了main.py導入的所有模塊。仍然沒有工作 – yebw

0

檢查腳本的權限。確保它可以通過cron執行 - 嘗試chmod + x main.py.

3

腳本中的任何文件訪問?如果是這樣,你的腳本中是否使用了相對路徑(甚至沒有顯式路徑)?
從命令行運行時,實際的文件夾是'您的路徑',您從中啓動腳本。當由cron運行時,'你的路徑'可能會因環境變量而有所不同。
所以嘗試使用絕對路徑來訪問任何文件。

+0

有幫助的答案:我正在訪問我的python腳本中的sqlite數據庫,並沒有提供完整的路徑。 – vrleboss