Cron을 사용하여 Python 스크립트를 반복적으로 실행하려고 합니다. 나는 이 파이썬 스크립트를 호출하기 위해 쉘 스크립트를 작성했습니다. 쉘 스크립트를 실행 가능하게 만들었고 터미널에서 단 한 번의 클릭만으로 완벽하게 실행됩니다.
저는 특정 간격(보통 1~2분)마다 쉘 스크립트를 호출하여 제대로 작동하는지 확인하도록 Crowntab을 변경했습니다. 그러나 내 스크립트가 올바르게 실행되지 않는 것 같습니다.
내 Python 스크립트는 꽤 길며 호출된 기본 Python 함수도 있습니다. 그럼에도 불구하고 cron이 제대로 작동하고 예상대로 호출되는 것처럼 보이는지 알아보기 위해 이를 호출하는 쉘 스크립트와 함께 짧은 Python 프로그램을 만들었습니다.
Python/셸 스크립트가 올바르게 호출 및 실행되지 않는 이유는 무엇입니까? 쉘 스크립트를 호출하는 경우 이를 보려면 cron 경로도 포함해야 합니까?
내 일정:
20 13 * * * /my/full/path/to/the/shell_script.sh
내 쉘 스크립트/파일:
#!/bin/bash
cd /full/path/to/the/python_script_folder
sudo python3 python_script.py argument
RPi3 /var/log/syslog:
Jan 23 20:13:01 raspberrypi cron[477]: (pi) RELOAD (crontabs/pi)
Jan 23 20:13:01 raspberrypi CRON[3851]: (root) CMD (/etc/myDevices/crontab.sh)
Jan 23 20:13:01 raspberrypi CRON[3854]: (pi) CMD (/my/full/path/to/the/shell_script.sh)
도움을 주시면 감사하겠습니다. 추가 정보가 필요하면 알려주시기 바랍니다. 감사해요.
답변1
@thrig가 언급했듯이 sudo는 비밀번호를 요청할 수 있으며 bash -x
실행된 내용과 출력된 내용에 대한 추가 정보를 제공합니다. 첫째, cron 출력을 리디렉션하는 것이 좋습니다.
20 13 * * * /my/full/path/to/the/shell_script.sh > ${HOME}/cron.log 2>&1
그러면 파일에 기록된 스크립트의 출력이 제공됩니다.
저 할 수 있어요:
- 항목을 실행해야 하는 사용자의 crontab에 항목을 배치합니다.
- 래퍼를 제거하고 명령을 "python3 /path/to/script.py args"로 설정합니다.