2017-08-17 6 views
1

CentOS開発用サーバでcronタブ/ジョブを設定するだけです。私のcrontab内CentOS 7用のcrontab/cronを使ったPython 3.6スクリプトのスケジューリング

私は、次があります。

34 15 * * * CDのwelcomeclient-0.0.5 & & python3.6のmain.py

(時間設定を無視し、これは約15を追加しました。 :次のスケジュールされた実行を取得するためだけに32 UTCサーバーの時間)。

コマンドラインでcd welcomeclient-0.0.5 & & python3.6 main.pyはうまくいきます...どのような提案ですか?

追加情報:... welcomeclient-0.0.5は、液滴中にルートの下にあり、そしてpython3.6はUSR/binにある

答えて

2

あなたのcrontabコマンドで絶対パスを使用してみてください:

34 15 * * * cd /foo/bar/welcomeclient-0.0.5 && /usr/bin/python3.6 main.py 

または、main.pyもその中の相対パスを使用しないと仮定すると:あなたはomu_negruは、あなたが完全な使用する必要があります言ったと同じように、crontabのディレクトリを変更しようとしているよう

34 15 * * */usr/bin/python3.6 /foo/bar/welcomeclient-0.0.5/main.py 
+0

ディレクトリwelcome-clientは実際にはルートディレクトリにあります... –

+0

これはどのように参照する必要がありますか? –

+0

私はこれを修正しました: '50 20 * * * /usr/bin/python3.6 /root/welcomeclient-0.0.5/main.py && >> /root/welcomeclient-0.0.5/main .log' –

1

が見えます代わりにパス。これは、crontabが自分の名前で実行されても$ PATHなどの環境変数を継承しないからです。

これを試してください。最初に、あなたのスクリプトがあるディレクトリに移動し、main.pyを実行可能ファイルに変えて、python main.pyをもう呼び出す必要はありません。あなたは、あなたがそれを直接実行することができます権限のユーザーセクションの「X」を持っていることがわかります-l最も簡単な方法は、今、あなたはLSをすれば...そうです

$ chmod u+x main.py 

を行います。

-rwxr--r-- 1 user user 0 Aug 17 17:55 main.py 

今、あなたはこのような何かにcrontabの構文を簡素化する準備が整いました...

34 15 * * * /foo/bar/welcomeclient-0.0.5/main.py 

私もそれをするときのトラブルシューティングが容易になりますので、ログファイルにスクリプトからの出力をキャプチャしたいです計画通りに次のようなものは、私たちが動作しません:

34 15 * * * /foo/bar/welcomeclient-0.0.5/main.py & >> /foo/bar/main.log 

ログは、それ以外の場合は、お使いのシステムがスペース不足に作り、最終的にいっぱいに保つとなり、回転をログに追加する必要があり、それはまた別のトンですopicは既にこのサイトで扱っています。

+0

私の質問に追加された情報が追加されました - また、何かが出力される前にmain.logが存在する必要がありますか、最初の "成功したが成功しなかった"実行後にcronがこれを作成しますか? –

+0

私は実際に今100%確信しています。私は通常、物事がログに記録される前に存在するかどうかを確認するために、ディレクトリに移動して 'touch main.log'をタッチします。 – darekm101

関連する問題