EDIT 2 27/06/2013: Проблема была глупой ошибкой, не связанной с venv и cron. Запуск venv из cron с тем же пользователем, который создал venv, отлично работает, используя активированный desscribed ниже.Cron & Virtualenv: Cron не запускает скрипт python, требующий virtualenv
EDIT 25/06/2013: Поскольку nohup.out не изменился после запуска cron, я подозреваю, что проблема заключается в использовании virtualenv. cron устанавливается с тем же пользователем, что и тот, который запускает скрипт из командной строки.
Я написал сценарий для активации venv, а затем запустил скрипт python. Он прекрасно работает из командной строки, когда я
nohup /home/heyheyhey/run.sh &
Однако для некоторых черных магических причин, питон часть не запускается из хрон:
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 не обновляется, и я не вижу активности в файле журнала.
Благодарим за помощь!
Нет необходимости использовать 'nohup' или' & 'в задании cron. 'nohup' не требуется, потому что нет терминала для разъединения, а' & 'не требуется, потому что все в cron эффективно находится в фоновом режиме. – Barmar
Да, я согласен, но я пробовал с и без nohup, и нет никаких различий, скрипт python все еще не запускается! – antoinet
Я никогда не говорил, что это будет иметь значение, я просто сказал, что это необязательно. – Barmar