2015-01-30 2 views
1

제 스크립트는 명령 행에서 호출 할 때 잘 작동합니다. 나는 크론과 일정에이 코드를 실행하기 위해 노력하고있어 :Nitrous.io, Python 및 Cron이 작동하지 않습니다.

with open('out.txt', 'a') as f: 
    f.write('Hello world! \n') 

그리고

chmod a+x hello_world.py를 설정 한하지만 which pythonwhich python3.3 반환 이후, python3.3로 Nitrous.io에서 실행하려면 /home/action/.parts/bin/python/usr/bin/python3.3입니다. 나는 스크립트의 시작 부분에 약간의 속쓰림을 추가하려고 노력했다.

#!/usr/bin/python 
#!/usr/bin/python3.3 
#!/usr/bin/env python 
#!/usr/bin/env python3.3 
#!/home/action/.parts/bin/python (Weird, I know...) 

명령 python은 2.7.6 파이썬 쉘을 반환하고 python3.3 또는 /usr/bin/python3.3은 3.3.5 파이썬 쉘을 반환합니다. 그리고 ls /usr/bin/python* 출력 :

#PATH=/usr/bin/python3.3:/home/action/.parts/bin:/home/action/.parts/sbin:/home/action/.parts/autoparts/bin:/home/action/.parts/autoparts/bin:/home/action/.parts/autoparts/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/home/action/.gem/ru 
by/1.9.1/bin 

#PYTHONPATH=/usr/bin/python3.3 

pidof cron

은 크론의 프로세스 ID를 반환한다 :

/usr/bin/python   /usr/bin/python2.6-config /usr/bin/python3.2-config /usr/bin/python3.3m        
/usr/bin/python2   /usr/bin/python2.7   /usr/bin/python3.2mu   /usr/bin/python3.3m-config      
/usr/bin/python2.5   /usr/bin/python2.7-config /usr/bin/python3.2mu-config /usr/bin/python-config       
/usr/bin/python2.5-config /usr/bin/python2-config /usr/bin/python3.3               
/usr/bin/python2.6   /usr/bin/python3.2   /usr/bin/python3.3-config 

내가 파이썬 경로 PYTHONPATH 경로에 추가.

... > /path/to/cron.log 2&>1으로 출력을 리디렉션하려고했지만 성공하지 못했습니다.

PYTHONPATH=/usr/bin/python3.3 
* * * * * /usr/bin/python3.3 /home/action/workspace/hello_world.py 

하지만 그것은 동작하지 않습니다는 ... 이 사람이 저 작은 사람을 도울 수있다 : 그리고 파생 상품은 ...

내의 crontab -e 파일처럼 보인다? :)

+1

cron 작업이 기록되는 로그 파일을 확인 했습니까?왜냐하면 해당 파일을 열거 나 쓰는 것과 관련된 권한 관련 오류가있을 수 있기 때문입니다. 로그인 할 위치를 찾으려면 http://unix.stackexchange.com/questions/207/where-are-cron-errors-logged 또는 http://askubuntu.com/questions/을 살펴보십시오. 56683/where-is-the-cron-crontab-log. – ozgur

+0

Nitrous.io에는 루트가 없습니다. grep CRON/var/log/syslog를 검사 할 수 없습니다. ( cron이 잘 작동하도록'* * * * ls -la; >>/home/action/workspace/cron.log'를 만들었습니다. 나는 또한 스크립트의 결과와 함께 이상한 경로의 파일을 발견 했으므로 언젠가는 작동했었다 ... 나는 그것을 검사하고있다 – Jeflopo

답변

1

내 생각 엔 스크립트가 정상적으로 작동하고 있습니다. 출력 없음, 문제 없음. 출력 파일의 위치를 ​​모르겠습니다.

코드에 절대 경로를 사용해보십시오. 여담으로

with open('/tmp/out.txt', 'a') as f: 
    f.write('Hello world! \n') 

- #! 상관 없어. 당신은 파이썬 인터프리터와 파이썬 스크립트를 앞에 때

는 :

/usr/bin/python3.3 <any-file> 

파이썬 interperter을하지 쉘 파일을 실행하고 #을 무시합니다! 선.

+0

나는 스스로 깨달았다. 답을하고 몇 가지 추가 정보를 추가 ... 나는 당신에게 명성을주고 그것을 받아 들일거야! 오 남자가 내 자신의 대답을 읽고, 우리는 거의 같은 xD를 말하고 있었다. 고마워요! – Jeflopo

+0

고마워, 고마워. 다행스럽게도 당신은 그것을 알아 냈습니다. – Jonathan

0

작동했습니다! Nitrous에서 ~/actions/은 루트 디렉토리로 작동합니다. 그래서 당신은 그렇게하려고하면 :

with open('out.txt', 'a') as f: 
    f.write('Hello world! \n') 

당신은 효과적으로은 내가 기대 한대로 작동하도록 내용 만 ~/actions/ 및하지 /home/actions/workbench/out.txt에있는 스크립트 파일의 현재 디렉토리에있는 파일을 만들

with open('workbench/out.txt', 'a') as f: 
    f.write('Hello world! \n') 

은 crontab -e 파일에 오두막도 PYTHONPATH에 대한 필요를 :로 재 작성하지했다. cron 명령 위와 동일합니다 (질문에서).

관련 문제