编辑2 27/06/2013:问题是与venv和cron无关的愚蠢错误。 使用创建venv的同一用户从cron运行venv可以使用下面描述的激活工作。
编辑 25/06/2013:由于在cron运行后nohup.out没有变化,我怀疑问题在于使用virtualenv。 cron的设置与从命令行运行脚本的用户相同。
我编写了一个脚本来激活venv然后运行python脚本。当我这样做时,它从命令行运行完美。
nohup /home/heyheyhey/run.sh &
但是,由于某些黑魔法原因,python部分不能从cron运行:
0 4 * * * /home/heyheyhey/run.sh &
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 :(得分:2)
cron工作的环境通常与您看到的环境不同 当您登录交互式shell时。特别是,你可能想要 检查python解释器是否在cron作业的$ PATH上。如果你的 python程序读取任何环境变量,你应该检查那些 确保它们在cron下按预期设置。