Cron은 Python 스크립트 [RPi3]를 호출하는 쉘 스크립트를 호출합니다.

Cron은 Python 스크립트 [RPi3]를 호출하는 쉘 스크립트를 호출합니다.

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

그러면 파일에 기록된 스크립트의 출력이 제공됩니다.

저 할 수 있어요:

  1. 항목을 실행해야 하는 사용자의 crontab에 항목을 배치합니다.
  2. 래퍼를 제거하고 명령을 "python3 /path/to/script.py args"로 설정합니다.

관련 정보