2017-12-27 41 views
-1

特定のバージョンのPython(3.6)でPythonファイルを実行するために使用しているbashスクリプトがあります。 bashスクリプトは、現在、私のデスクトップ上に配置されている(/home/pi/Desktop/go.sh)私は-l(注を行うときのcrontabここ crontab bashスクリプトの実行 - Raspberry Pi

#!/bin/bash 
python3.6 /home/pi/scriptDir/myScript.py 

は、私のcrontabエントリで、私は私の他のジョブを削除しました)

* * * * * bash /home/pi/Desktop/go.sh # JOB_ID_3 

このファイルをコマンドラインまたはGUIから実行すると、正しく実行されます。

私がcrontabにしても何も起こりません。

私のpythonファイルとbashスクリプトの両方が実行可能です。 chmod + x

明白な何かがありますか?

**私のpythonスクリプトは、同じスクリプトディレクトリ内の他のファイルに依存していますが、それは問題になる可能性がありますか?

+0

私は私のcronへ> /home/pi/Desktop/clog.logで追加され、何もinital出力はありませんでしたが、私は、エコーを使用したとき、私は「開始」と「もらうように私は、実際のbashスクリプトが実行されていることを見ることができます「終了」エコーが期待通りに出力されます。つまり、pythonスクリプトのエラーです。だから私はどのようにデバッグする/ Pythonスクリプトの実行を記録するのですか? – Robomato

答えて

0

驚くほどトリッキーな仕事です。作業ディレクトリ(どこかに置かなければならない)とは別に、環境設定(例えば、$PATH)も処理する必要があります。

まず、シェルスクリプトの標準出力とエラーをログファイルにリダイレクトして、フィードバックを得ることができます。

+2

これは良い、トラブルシューティングのセクションを持っている(/タグ/ cronを/情報)[情報ページにタグを付けcron'スタックオーバーフロー ']の貧しい要約要約です。 – tripleee

0

これは私のために働いているものです。私はpythonのインストールに完全なパスを使用していませんでした。 bashファイルをログに記録しない限り、問題があるという兆候はありません。

これは今、私のbashファイルです。 echoは、私が実際にbashファイルを実行していることを確認するだけでした。

#!/bin/bash 
echo started 
/home/pi/Python-3.6.0/python home/pi/myScriptFolder/myScript.py 
echo finished 

は、スクリプトを実行するライン打破するには: /home/pi/Python-3.6.0/python - のpython 3.6.0は私のパイの上に設置されているが、それはあなたのために異なる可能性があります。 home/pi/myScriptFolder/myScript.pyは実行したいスクリプトです。

*/15 * * * * bash /home/pi/Desktop/go.sh > /home/pi/Desktop/clog.log 2>&1 -q -f 

このラインを破壊: */15 * * * *、この場合には、15分毎にcronの時間です

そして、ここでは私のcron文です。 bash /home/pi/Desktop/go.shは、bashファイルとそのファイルのディレクトリを実行するように指定します。 > /home/pi/Desktop/clog.log 2>&1 -q -fこの最後のセクションでは、clog.logという名前のログファイルを作成して、何が起きているのかを確認できます。ここ

キーだけgo.sh bashのファイルの実行をログに記録が、ログ要求の最後に2>&1 -q -fを追加していませんでした。私がそれをする前に問題の兆候はなく、その後、pythonファイルのエラーがログファイルに返されました。

関連する問題