2017-12-27 8 views
-1

특정 버전의 Python (3.6)을 사용하여 Python 파일을 실행하는 데 사용하는 bash 스크립트가 있습니다. bash는 스크립트가 현재 내 바탕 화면에있는 (/home/pi/Desktop/go.sh) 나는 -l (주 crontab에 수행 할 때 다음 crontab bash 스크립트 실행 - Raspberry Pi

#!/bin/bash 
python3.6 /home/pi/scriptDir/myScript.py 

, 내 crontab 항목, 난 내 다른 작업을 삭제 한)

* * * * * bash /home/pi/Desktop/go.sh # JOB_ID_3 

이 파일을 명령 줄 또는 GUI에서 실행할 때 제대로 실행됩니다.

내가 crontab을 실행하면 아무 일도 일어나지 않습니다.

내 파이썬 파일과 bash 스크립트는 모두 실행 가능합니다. chmod + x

내가 분명치 않습니까?

** 내 python 스크립트는 동일한 스크립트 디렉토리의 다른 파일에 의존합니까?

+0

내 cron에> /home/pi/Desktop/clog.log를 추가 했는데도 인위적인 결과는 없었지만 에코를 사용했을 때 실제 bash 스크립트가 실행 중임을 알 수 있습니다. "시작"과 " finish "echo를 예상대로합니다. 이것은 오류가 python 스크립트에 있음을 의미합니다. 그렇다면 파이썬 스크립트 실행을 디버깅/로그하는 방법은 무엇입니까? – Robomato

답변

0

크론 작업은 놀랍지 않게 까다 롭습니다. 작업 디렉토리 (어딘가 설정해야 함)를 제외하고 환경 설정 (예 : $PATH)도 처리해야합니다.

피드백을받을 수 있도록 셸 스크립트의 표준 출력과 오류를 로그 파일로 리디렉션하는 것으로 시작하십시오.

+2

좋은 문제 해결 섹션이있는 [Stack Overflow'cron' 태그 정보 페이지] (/ tags/cron/info)에 대한 간략한 요약입니다. – tripleee

0

다음은 저에게 맞는지입니다. 내 파이썬 설치 전체 경로를 사용하지 못했습니다. bash 파일을 로그하지 않으면 문제가 있다는 징후가 없습니다.

이것은 현재 내 bash 파일입니다. echo는 내가 실제로 bash 파일을 실행하고 있는지 확인하는 것이었다.

#!/bin/bash 
echo started 
/home/pi/Python-3.6.0/python home/pi/myScriptFolder/myScript.py 
echo finished 

스크립트를 실행하는 라인을 무너 뜨리는 : /home/pi/Python-3.6.0/python - 파이썬 3.6.0가 내 파이에 설치되어, 당신을 위해 다를 수 있습니다. home/pi/myScriptFolder/myScript.py은 내가 실행하고 싶은 스크립트입니다.

*/15 * * * * bash /home/pi/Desktop/go.sh > /home/pi/Desktop/clog.log 2>&1 -q -f 

이 줄을 끊기 : */15 * * * *이 경우, 매 15 분 크론 시간

그리고 여기 내 크론 문입니다. bash /home/pi/Desktop/go.sh은 bash 파일과 해당 파일의 디렉토리를 실행하도록 지정합니다. > /home/pi/Desktop/clog.log 2>&1 -q -f이 마지막 섹션은 clog.log라는 로그 파일을 생성하므로 어떤 일이 벌어지는 지 확인할 수 있습니다.

여기서 핵심은 go.sh bash 파일 실행을 기록하는 것이 아니라 로그 요청 끝에 2>&1 -q -f을 추가하는 것입니다. 전에는 문제의 징후가 없었고, 나중에 파이썬 파일 오류가 로그 파일에 반환되었습니다.