2013-06-25 4 views
0

EDIT 2 27/06/2013 : 문제는 venv 및 cron과 관련없는 바보 같은 실수였습니다. venv를 만든 사용자가 동일한 cron에서 venv를 실행하려면 아래에서 desscribed로 활성화하십시오.Cron & Virtualenv : Cron은 virtualenv가 필요한 python 스크립트를 실행하지 않습니다.

편집 25/06/2013 : nohup.out은 cron이 실행 된 후 변경되지 않으므로 virtualenv를 사용하고있는 것으로 의심됩니다. cron은 명령 줄에서 스크립트를 실행하는 사용자와 동일한 사용자로 설정됩니다.


나는 venv를 활성화 한 다음 python 스크립트를 실행하는 스크립트를 작성했습니다. run.sh의

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

내용 : 내가 어떤 마술 이유로, 파이썬 부분은 크론에서 실행되지 않습니다, 그러나

nohup /home/heyheyhey/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를 실행한다. 그러나 Exporter.csv가 업데이트되지 않고 로그 파일에 작업이 표시되지 않으므로 python 스크립트가 작동하지 않습니다.

도움 주셔서 감사합니다.

+0

'nohup' 또는'&를 사용할 필요가 없다'cron 작업이다. 'nohup '은 연결을 끊을 터미널이 없기 때문에 필요하지 않으며, cron의 모든 것이 효과적으로 백그라운드에 있기 때문에'&'는 필요하지 않습니다. – Barmar

+0

예, 동의합니다. 그러나 nohup을 사용하거나 사용하지 않고 시도했지만 차이점이 없으며 python 스크립트가 실행되지 않습니다! – antoinet

+0

나는 그것이 차이를 만들 것이라고 결코 말하지 않았다, 나는 단지 그것이 필요하지 않다고 말했다. – Barmar

답변

2

cron 작업의 환경은 대화 형 쉘에 로그인 할 때 당신이 를 볼 수있는 환경에서 종종 다릅니다. 특히, 은 파이썬 인터프리터가 cron 작업에 대한 $ PATH에 있는지 확인해야 할 수 있습니다. 당신의 파이썬 프로그램이 환경 변수를 읽는 경우에, 당신은 너무 사람들을 확인 에 크론에서 예상대로 설정하고 확인해야합니다.

+1

또한'nohup'이/stderr로 표준 출력을 리디렉션하는 것이'nohup.out', 로그 파일을 확인해야합니다. 아마도 많은 오류 메시지가있을 것입니다. –

+0

사실 적어도 OS X에서는'nohup' 자체가 cron 작업의 기본 경로에 있지 않습니다. –

+0

좋은 생각,하지만 nohup.out은 내가 문제가 어쩌면 내 크론 사용자와의 VIRTUALENV의 사용에 의심 나는 – antoinet

관련 문제