crontab 작업에서 Python 파일이 실패함

crontab 작업에서 Python 파일이 실패함

저는 RPI Zerow를 사용하여 Python 코드(Raspbian Strech-Lite)를 실행하고 있습니다.

시작 시 2개의 파일을 실행해야 합니다: MQTTlogger.pySched_MQTT.py. 두 파일 모두 명령줄을 사용하면 제대로 실행되지만 2개의 작업을 추가하면 crontab그 중 하나만(두 번째 파일) 실행됩니다. 파일 이름과 경로가 모두 정확합니다.

모든 로그 파일을 검색해도 /var/log시작 중 오류가 발생했다는 증거는 나타나지 않았습니다.

이유를 아시나요?

@reboot /usr/bin/python3 /home/guy/github/SmartHome_SoC/MQTTswitches/MQTTlogger.py
@reboot /usr/bin/python3 /home/guy/github/SmartHome_SoC/MQTTswitches/Sched_MQTT.py

편집 1: 그냥 실행하세요MQTTLOGGER.PY

그냥 떠나는 MQTTlogger.py것은 차례로 달려가는 것이 아니라 crontab달려가는 문제라는 것을 의미합니다 .crontab

crontab작업에서는 파일 실행이 실패했지만 명령줄에서 실행하면 성공하는 이유는 무엇입니까? 어떻게 디버깅할 수 있나요?

EDIT2: crontab 오류를 잡아보세요

@reboot /usr/bin/python3 /home/guy/github/SmartHome_SoC/MQTTswitches/MQTTlogger.py >> /home/guy/crontab.log 2>&1

생산하다:

File "/home/guy/github/SmartHome_SoC/MQTTswitches/MQTTlogger.py", line 1, in <module>
    import paho.mqtt.client as mqtt
ImportError: No module named 'paho'

MQTT 패키지의 경로와 관련이 있는 것 같습니다.

답변1

가장 가능성이 높은 문제는 cron서비스를 사용할 수 있기 전에 이러한 작업(하나 또는 둘 다)을 실행하려고 하는 것입니다. 이 문제를 해결하는 간단한 방법은 sleep필요한 서비스가 시작될 때까지 기다리는 지연을 추가하는 것입니다.

@reboot sleep 10; /usr/bin/python3 /home/guy/github/SmartHome_SoC/MQTTswitches/MQTTlogger.py && /usr/bin/python3 /home/guy/github/SmartHome_SoC/MQTTswitches/Sched_MQTT.py

당신의 문제는이 질문 중 하나와 유사합니다.이므로 자세한 내용은 해당 페이지를 참조하시기 바랍니다.

디버깅을 위한 출력을 캡처하기 위해 콘텐츠를 stderr파일로 리디렉션할 수도 있습니다. crontab위에 나열된 행의 합계에 이를 추가하면 됩니다.

> ~/cronjoblog 2>&1

답변2

내 문제는 두 가지로 해결되었습니다.

1) 추가 sleep- crontabSeamus가 제안한 대로:

@reboot sleep 10; /usr/bin/python3 /home/guy/github/SmartHome_SoC/MQTTswitches/MQTTlogger.py >> /home/guy/crontab.log 2>&1`

2) 코드 내의 경로를 수정하여 경로를 수정합니다(스택오버 흐름에서 요청한 대로).인용하다

관련 정보