1

编辑 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 没有更新,而且我在日志文件中看不到活动。

谢谢你的帮助!

4

1 回答 1

2

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

于 2013-06-25T00:15:56.283 回答