2011-03-24 47 views
3

我有一個外殼腳本,從而:殼牌腳本從終端呼叫的Python,但無法從克朗

export PYTHONPATH=/usr/local/lib/python 
cd /home/skip/workspace/UAM 
for file in *.txt 
do 
    echo $file >>log.fil 
    /usr/bin/python push.py -s $file 
done 
return 0 

它正確地從命令行運行。將每個文件名打印到日誌文件並按預期運行python push.py命令。 (它創建一個目錄,並填充它。)

但是當我嘗試從cron這個crontab中運行它:

3 * * * * /home/skip/workspace/UAM/RunAllTest.sh 

我看到在日誌文件中的條目,但push.py不運行正常。 (該目錄未被創建或填充)。

任何援助將受到歡迎。

回答

3

檢查push.py不需要任何可能未在crontab上下文中設置的環境變量。如果它是一個用戶crontab(而不是根cron),那麼它將被執行,就像同一個用戶執行該行一樣,但不一定進入相同的環境(如初始化文件中的別名和路徑集)。

+1

神奇。這是非常有幫助的。我不認爲這是我的實際問題,但它的啓發我會深入一點,稍後我會報告更多的內容(基本上,如果我剝去大部分「push.py」應該做的事情,那麼cron過程就起作用了,這是無用的,但它可以工作。) – 2011-03-24 15:44:39

1

明白了。感謝licorna的協助。

發生了什麼是我的「push.py」腳本正在調用另一個程序(pybot又名機器人框架),而沒有指定完全合格的路徑。

我改變了從「pybot」到/ usr/local/bin目錄/ pybot」和所有的工作。

+1

你可能會看看你是否在腳本中使用sh或bash(你不包括第一行),Bash可能包含適合你的路徑,我會接受@licorna的答案,因爲它包含「在初始化文件中設置的路徑」 – chmullig 2011-03-24 17:12:09