Cron & Virtualenv : Cron 不运行需要 virtualenv 的 python 脚本



EDIT 22013年6月27日:问题是一个与venv和cron无关的愚蠢错误。使用下面描述的activate described,与创建venv的同一用户一起从cron运行venv效果很好。

EDIT2013年6月25日:由于运行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没有更新,并且我在日志文件中没有看到活动。

谢谢你的帮助!

cron作业的环境通常与您看到的环境不同当您登录到交互式shell时。特别是,您可能希望检查python解释器是否在cron作业的$PATH上。如果您python程序读取任何环境变量,您也应该检查这些变量,以确保它们在cron下按预期设置。

最新更新