![crontab에서 Python 스크립트를 실행하는 데 문제가 있습니까?](https://linux55.com/image/180851/crontab%EC%97%90%EC%84%9C%20Python%20%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EB%A5%BC%20%EC%8B%A4%ED%96%89%ED%95%98%EB%8A%94%20%EB%8D%B0%20%EB%AC%B8%EC%A0%9C%EA%B0%80%20%EC%9E%88%EC%8A%B5%EB%8B%88%EA%B9%8C%3F.png)
실제로 날짜와 현재 라즈베리 파이 온도의 csv인 /home/projects/temperature_logger/analyze.py
파일에 대해 일부 처리를 수행하는 스크립트가 있습니다 . temp.log
Python 스크립트는 결과를 .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.log
cron에서 호출하면 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!")