web-dev-qa-db-ja.com

pythonスクリプト[RPi3]を呼び出すシェルスクリプトを呼び出すcron

Cronを使用してpythonスクリプトを繰り返し実行しようとしています。それ/これらのpythonスクリプトを呼び出すシェルスクリプトを作成しました。私はシェルスクリプトを実行可能ファイルとして作成し、ターミナルでもクリックして実行するだけでも完璧に機能します。

シェルスクリプトを特定の時間間隔(通常は1〜2分)で呼び出して、それが機能しているかどうかを確認するように、crowntabを変更しました。ただし、スクリプトが正しく実行されていないようです。

私のpythonスクリプトは長いもので、呼び出すローカルpython関数もあります。それでも、cronが機能するかどうかを確認する目的で、短いpythonプログラムとシェルスクリプトを作成して呼び出しました。意図したとおりに呼び出されているようです。

Python/Shellスクリプトが実行のために適切に呼び出されないのはなぜですか?シェルスクリプトを呼び出す場合でも、cronが表示するパスを含める必要がありますか?

私のcrontab:

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)

どんな助けでも大歓迎です。追加情報が必要な場合は、お知らせください。ありがとうございました。

2
Gytis Bernotas

@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.pyargs」として設定します
0
michal