2013-01-01 24 views
2

我在第一行中有一個帶有#!/usr/bin/python的python腳本。我可以從CLI運行它python myScp.py.在cron中使用python腳本

但作爲cron腳本的一部分。 python腳本無法運行。 cron經過測試,運行python腳本並可以寫入/tmp/crontest.txt

看起來有一個目錄問題。我用os.getcwd().進行了測試它的正確性......只是當cron運行腳本時,它會引發錯誤。從CLI運行:/usr/bin/python myScp.py將引發相同的錯誤。

Traceback (most recent call last): 
    File "/myScp.py", line 31, in <module> 
    execfile(dn2 + 'anotherScpt.py') 
IOError: [Errno 2] No such file or directory: './anotherScpt.py' 
+3

拋出什麼錯誤? – Thomas

+0

您的Python版本實際上是否在該路徑?試試'#!/ usr/bin/env python' - 無論系統設置如何,這都應該更好地獲得正確的路徑。另外,嘗試使用'./ myScp.py'執行該文件,因爲這正是cron基本上所要做的。 –

+0

@thomas see traceback – Merlin

回答

9

我們的首選方式是和顯式指定的工作目錄中的crontab項:

0 0 * * * cd /my/project; /opt/python-2.7/bin/python bin/myscript.py 
2

由於錯誤,你的問題是,你所依賴的程序在一個特定的目錄是執行另一個文件。

當您在其所在的目錄中運行該程序時,它可以找到該文件 - 當您(或cron)在該目錄之外運行該文件時,它無法找到該文件。您需要將文件放在腳本可以找到它的位置,使用絕對路徑或在程序中查找腳本的位置。