2016-09-20 2 views
1

매분마다 crontab에 스크립트 (/home/sys_bio/username/tracer.sh)를 실행하는 작업이 있습니다. 내가 디렉토리 /home/sys_bio/username/ 안에 있고 나는 commany ./tracer.sh을 실행하면 스크립트가 예상대로 실행crontab이 완전히 작동하지 않습니다. echo 문만 실행 중임

#!/usr/bin/env bash 

echo "starting" 
/home/sys_bio/username/p35/bin/python3.5 -m qefunctional.qe.tests.prodprobe -p post -j test.json 
echo "finised" 

이 포함되어 있습니다.

그러나 작업을 crontab에 추가하면 echo 부분 만 실행됩니다.

또 다른 주목할 점은 p35이 내 python3이있는 곳입니다. 그래서 /home/sys_bio/username/p35/bin/python3.5은 모든 python3 스크립트를 실행하는 방법입니다.

이것은 내 crontab을

* * * * * /home/sys_bio/username/tracer.sh >> /home/username/tracer.cron.txt

내가 만든 .txt 파일을 받고 있습니다 만 에코 문이 저장되는에있는 것입니다.

이 혼란 보일 수 있지만, 디렉토리 구조는 같은 수 있습니다 :

/home 
     /sys_bio 
     /username 
      /qefunctional 
       __init__.py 
       /qe 
        __init__.py 
        /tests 
        __init__.py 
        prodprobe.py 
      test.json 
      /p35 
       /bin 
        python3.5 
      tracer.sh 
     /username 
     tracer.cron.txt 

* 내가 그래서이 오류를 리디렉션 할 수 있습니다 내 스크립트에 좀 더 추가 할 수 있었다

이 * 편집 파일. 이 스크립트는 이제 다음과 같습니다 나는이 오류가 무엇입니까 : 그렇지

* * * * * /bin/sh /home/sys_bio/username/tracer.sh >> ... 

cron되지 않을 수 있습니다 필요할 수 있습니다 bash는 쉘의 경로를 포함

#!/usr/bin/env bash 

echo "Starting Tracer POST" 

/home/sys_bio/username/p35/bin/python3.5 -m qefunctional.qe.tests.prodprobe -p post -j /home/sys_bio/username/test.json -d -v 2>/home/username/crontab.output 

echo "Ending Tracer POST" 
+1

상대 경로가 아닌'test.json'의 절대 경로를 사용하십시오 ... –

답변

1

:

/home/sys_bio/username/p35/bin/python3.5: Error while finding spec for 'qefunctional.qe.tests.prodprobe' (<class 'ImportError'>: No module named 'qefunctional') 

스크립트를 정말로 무엇을 해야할지 압니다.

동일한 원칙이 스크립트에 포함 된 내용에도 적용됩니다.

test.json 

(예를 들어)을 절대 경로를 사용하는 데 필요한 수 있습니다 :

로컬 대화 형 쉘 (예)를 사용하는 것처럼 그들은 종종 같은 해석되지 않기 때문에 실패 할 수 있습니다 상대 파일 이름을 사용하여
/full/path/to/test.json 

EDIT : 문제는 분명히 경로와 관련이 있습니다. 파이썬은 에있는 두 개의 디렉토리 대신에 /home/sys_bio/username/p35/bin/python3.5 경로에서 모듈을 찾으려고합니다. 픽스는 cd 디렉토리에 있거나 모듈의 절대 경로를 제공하여 해결됩니다. 추가하여 .sh 스크립트에 다음

cd /home/sys_bio/username 

아래 대신 두 가지 수준의이 모듈을 찾아 그것을 다음 명령을 허용해야합니다.

+0

변경 후, python 오류 = [여전히 해결 방법을 모르겠습니다.도와 주셔서 감사합니다! 매우 감사! – Liondancer

+0

@Liondancer : 파이썬 프로젝트 구조를 게시하는 것이 도움이 될 수 있습니다. 문제가 현재 cron과 관련이없는 이유와 관련하여 더 많은 것으로 보입니다. 아마도 import, init 등과 같이 간단 할 것 같습니다. –

+0

다음은 업데이트 된 프로젝트 구조입니다! http://dpaste.com/1BQ839A 또한 질문에 업데이트되었습니다. – Liondancer

관련 문제