Question

EDIT 2 27/06/2013: The problem was a silly mistake unrelated to venv and cron. Running venv from cron with the same user that created the venv works great using the activate desscribed below.

EDIT 25/06/2013: Since nohup.out is unchanged after the cron runs, I suspect the problem is in the use of virtualenv. The cron is set with the same user than the one running the script from the command line.


I have written a script to activate venv then run a python script. It runs perfectly from the command line, when I do

nohup /home/heyheyhey/run.sh &

However, for some black magic reasons, the python part does not run from cron:

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

Content of 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"

The run.sh executes since the output compressed file is created. However the python script does not work since the Exporter.csv is not updated and I do not see activity into the log file.

Thanks for your help!

No correct solution

OTHER TIPS

The environment of a cron job is often different from the environment you see when you're logged into an interactive shell. In particular, you might want to check whether the python interpreter is on the $PATH for the cron job. If your python program reads any environment variables, you should check those too, to ensure they're set as expected under cron.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top