2016-11-14 41 views
0

私はcrontabで1日に2回、別の時間に実行しようとしています。他のpythonスクリプトとbashスクリプトを関数として呼び出すPythonスクリプトです。すべてのスクリプトは、crontabで指定されたパスにあります。 crontabファイルは、次のようになります。 は/ usr/binに/ ENV::Pythonプログラムでエラーが発生しました。/ bin/env python crontabでそのようなファイルがありません。

PATH=/home/test/Desktop/UntitledFolder/ContinuousTest 
0 08 * * 1,2,3,4,5 /home/test/Desktop/UntitledFolder/ContinuousTest/automated.py 
46 10 * * * /home/test/Desktop/UntitledFolder/ContinuousTest/automated.py 

コードは、私は、スクリプトをcronジョブから実行されたとき、私はこのエラーを取得することがわかり、この

#!/usr/bin/env python 

import curses 
import os 


def Move(): 
    os.system("cd /home/test/Desktop/UntitledFolder/ContinuousTest") 


def Upgrade(): 
    os.system("python upgrade.py") 
    os.system("python upgrade.py") 


def Setup(): 
    os.system("python setup.py") 
    os.system("python setup2.py") 

def Throughput(): 
    os.system("./test.sh") 

def Sleep(): 
    os.system("sleep 320") 

Move() 
Setup() 
Upgrade() 
Sleep() 
Throughput() 

のように見えますpython:そのようなファイルやディレクトリはありません

何が問題なのですか?

+0

'cronjob'は、異なる権限と異なる環境(つまり、変数' PATH'で異なるパスを持つことができる)で、異なるユーザとして実行されます。あなたはpythonへの完全なパス、すなわち '/ usr/bin/python'を使わなければならないかもしれません。 – furas

答えて

1

/usr/bin/envpythonを実行するには、PATHを検索する必要があります。 PATHを完全に1つのディレクトリに置き換え、通常の/bin/usr/binのパスを含まないため、envは実行するにはpythonを見つけることができません。

ソリューションはPATH=/bin:/usr/bin:/home/test/Desktop/UntitledFolder/ContinuousTestを設定し、あるいは単に完全envを不要と(それが意図している場合やpython3)あなたのスクリプトの先頭に#!/usr/bin/pythonを置くのいずれかにあります。

別の合理的な解決策ではなく、あなたのcrontabPATHを設定することで、代わりに、必要に応じてスクリプト内PATH修正を置く - あなたのcrontabに追加のジョブを追加する場合、道路ダウン少ない驚きにつながる可能性があります。

関連する問題