2013-06-25 25 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