2013-06-25 32 views
0

EDIT 2 27/06/2013 python腳本:這個問題是一個愚蠢的錯誤無關VENV和cron。 用cron運行venv與創建venv的同一個用戶使用下面的激活描述很好。的Cron&VIRTUALENV:克朗不運行需要的virtualenv

編輯 25/06/2013:由於nohup.out在cron運行後沒有改變,我懷疑問題在於使用virtualenv。 cron的設置與用戶從命令行運行腳本的用戶相同。


我已經寫了一個腳本來激活venv然後運行一個python腳本。它完美地在命令行中運行,當我做

nohup /home/heyheyhey/run.sh & 

然而,對於一些魔法的原因,蟒蛇部分不從cron運行:run.sh的

0 4 * * * /home/heyheyhey/run.sh & 

內容:

#! /bin/bash 
cd /home/heyheyhey 
. /home/heyheyhey/.pythonbrew/venvs/Python-2.7.2/venvname/bin/activate 2> error.log 
python /home/heyheyhey/top.py 2> error.log 
bzip2 -c "Exporter.csv" > "extraction.csv.bz2" 

run.sh會在創建輸出壓縮文件後執行。 但是,python腳本不起作用,因爲Exporter.csv沒有更新,我沒有看到日誌文件中的活動。

感謝您的幫助!

+0

沒有必要在cron作業中使用'nohup'或'&'。 'nohup'沒有必要,因爲沒有終端可以斷開連接,'&'不需要,因爲cron中的所有內容都在後臺有效。 – Barmar

+0

是的,我同意,但我嘗試過,沒有nohup,沒有區別,python腳本仍然不運行! – antoinet

+0

我從來沒有說過會有所作爲,我只是說沒有必要。 – Barmar

回答

2

cron作業的環境通常與您在登錄交互式shell時看到的環境 不同。特別是,您可能想要 檢查python解釋器是否位於cron作業的$ PATH中。如果您的python程序讀取任何環境變量,則應該檢查這些變量,以確保它們在cron下按預期設置。

+1

另外請務必檢查'nohup.out','nohup'將stdout/stderr重定向到的日誌文件。它可能有一堆錯誤消息。 –

+0

實際上,至少在OS X上,'nohup'本身不在cron作業的默認路徑中。 –

+0

好主意,但自從上次運行腳本(直接從命令行)nohup.out沒有改變 – antoinet