CronはPythonスクリプト[RPi3]を呼び出すシェルスクリプトを呼び出します。

CronはPythonスクリプト[RPi3]を呼び出すシェルスクリプトを呼び出します。

Cronを使用してPythonスクリプトを繰り返し実行しようとしています。私はこのPythonスクリプトを呼び出すためにシェルスクリプトを作成しました。シェルスクリプトを実行可能にし、端末で1回クリックするだけで完全に実行されます。

私は特定の間隔(通常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」に設定します。

おすすめ記事