crontab에서 Python 스크립트를 실행하는 데 문제가 있습니까?

crontab에서 Python 스크립트를 실행하는 데 문제가 있습니까?

실제로 날짜와 현재 라즈베리 파이 온도의 csv인 /home/projects/temperature_logger/analyze.py파일에 대해 일부 처리를 수행하는 스크립트가 있습니다 . temp.logPython 스크립트는 결과를 .log파일에도 기록합니다. 명령줄에서 호출하면 sudo python3 analyze.py예상대로 작동하지만 어떤 이유로 crontab에서 작동하도록 할 수 없습니다.

sudo chmod +x analyze.py나도 거기로 달려갔어 sudo chmod ugo+w analyze.py.

whereis python3말은 /usr/bin/python3. 내 스크립트 상단의 shebang analyze.py#!/usr/bin/python3.

내 crontab 스크립트는 다음과 같습니다. * * * * * /usr/bin/python3 /home/projects/temperature_logger/analyze.py

테스트 목적으로 제가 지금 실제로 실행하고 있는 것은

if __name__ == '__main__':
    logging.info("running file!")

sudo python3 analyze.py내 analyze.py에 있지만 디렉터리에서 수동으로 호출하지 않으면 내 로그 파일에 채워지는 것을 볼 수 없습니다.

내가 여기서 뭘 잘못하고 있는 걸까? 시스템 로그에는 오류가 표시되지 않는 것 같지만 이해하지 못하는 것 같습니다. 사진에 대해 사과드립니다. PuTTy 터미널에서 복사하는 방법을 잘 모르겠습니다.여기에 이미지 설명을 입력하세요.

업데이트: 내 사용자에 대한 모든 ubuntu권한을 추가했습니다 sudo chmod -R a+rwx /home/projects/temperature_logger. 그런 다음 crontab을 변경하고 루트 cron을 지우고 ubuntu cron 파일 아래에 Python 스크립트에 대한 호출을 배치했습니다. 이제 syslog에서 이것을 볼 수 있습니다. 여기에 이미지 설명을 입력하세요.

오류가 표시되지 않는 것 같습니다. 그러나 이를 호출하면 스크립트가 python3 analyze.py내 파일에 올바르게 쓰지만 scripts.logcron에서 호출하면 syslog를 실행 중이라고 표시됩니다. 로깅이 표시되지 않습니다.

해결됨: 이는 내 사용자 계정의 홈 디렉토리와 스크립트의 현재 작업 디렉토리가 무엇인지 오해했기 때문입니다. 내 analyze.py스크립트 에서는 logging.basicConfig(filename='scripts.log', ...)디렉토리에서 실행할 때 에 sudo쓰지만 /home/projects/temperature_logger/scripts.log사용자의 cron 파일에서 호출할 때는 에 씁니다 /home/ubuntu/scripts.log.

답변1

scripts.log를 어떻게 작성했는지는 모르겠지만, login.info를 사용하는지 테스트하려면 로깅을 위한 올바른 기본 구성이 설정되어 있는지 확인하세요. 이와 같이...

if __name__ == '__main__':
    logging.basicConfig(filename='test.log',level=logging.DEBUG)
    logging.info("running file!")

관련 정보