2013-08-08 7 views
0

저는 cron이 변덕스럽고 Linux에서 어떻게 처리해야하는지 알고 싶습니다.홈 폴더에없는 스크립트 인 경우 Cron은 Python 스크립트를 실행하지 않습니다.

나는이 테스트 크론에 대한 test_cron.py 실행 파이썬 스크립트 다음

* * * * * python /home/me/test_cron.py 
* * * * * python /home/me/some_folder/test_cron.py 

문제가 : 나는 두 개의 서로 다른 폴더에 스크립트를 실행하는 내 crontab을에 두 줄을 추가

#!/usr/bin/env python 

import os 

os.makedirs('test_cron_dir') 
f = open('test_cron_dir/test_file','w') 
f.write('stuff') 
f.close() 

: cron은 /home/me/에있는 test_cron.py 스크립트를 실행하지만 /home/me/some_folder/에있는 스크립트는 실행하지 않습니다. 스크립트의 경로를 절대 경로로 변경했지만 상황에 아무런 변화가 없습니다. 또한 루트 crontab을 사용하려고 시도했지만 아무 것도 변경하지 않습니다.

누구나 지식과 경험을 내게 비추어 줄 수 있습니까? 고마워.

+0

/var/log/syslog (또는 다른 로그, 배포판에 따라 다름)가 힌트를 제공하는지 확인 했습니까? – StianE

+0

스크립트는'os.makedirs ('test_cron_dir')'과'open ('test_cron_dir/test_file', 'w')의 상대 경로와 파일 경로를 사용하고 있습니다. –

+0

로그는 다음과 같습니다 :'Aug 8 15:00:01 컴퓨터 CRON [1111] : (me) CMD (python /home/me/some_folder/test_cron_2.py)' 그러나 생성되는 디렉토리 나 파일을 볼 수 없습니다. 안타깝게도 절대 경로로 변경하는 경로는 내가 언급 한대로 변경되지 않으며 스크립트는 내 홈 폴더에있을 때 절대 경로없이 실행됩니다. –

답변

0

cron은 사용자의 홈 디렉토리에서 crontab(5) 항목을 실행 중입니다.

이 있습니다 (cd 쉘 내장 통해, 또는 os.chdir를 사용하여 파이썬 스크립트 내부 중 하나)을 chdir(2) 콜 전화를 적절하게, 즉 디렉토리를 변경해야합니다.

스크립트에서 getcwd(3) 또는 pwd 명령 또는 os.getcwd (Python의 경우사용)을 쿼리해야합니다.

명령을 실행하는 경우 PATH도 확인하십시오.

+0

고마워요. 제 전체 실제 프로그램을 살펴 보았는데 실제로는 절대 경로 문제였습니다. –

+0

예 : "00 09 * * 3 cd/path/to/your/script; python yourScript.py" – nottinhill

관련 문제