Cronジョブは期待どおりに実行されません。

Cronジョブは期待どおりに実行されません。

だから私はgit / svn / p4リポジトリを取得し、データベースにいくつかの書き込みを実行するPythonスクリプトがあります。

スクリプトを自動化したいシステムログに表示されている内容を見ると、スクリプトが実行されていて出力をパイプしたいファイルも作成されていますが、ファイルは空です。クローンの仕事は次のとおりです。

10 04 * * * user /usr/bin/python2.7 /home/user/script.py -f someFlag > ~/cronout.log 2&>1

ちょっと恥ずかしいので、どこから始めるべきかわかりません。これがキーチェーンのパスワードなどに対する要求事項かもしれないと思いました。どんなアイデアでも役に立ちます!

答え1

tee を使用して出力を取得します。

ティーマニュアル

tee標準入力/出力から読み取ってファイルに書き込みます。私の要件の1つをサポートするPythonスクリプトがありますが、単純な ">"リダイレクトは失敗します。 Teeは出力をキャプチャする方法です。

あなたの行は次のようになります:

10 04 * * * user /usr/bin/python2.7 /home/user/script.py -f someFlag | tee -a ~/cronout.log 2>&1

この試み:Pythonスクリプトを/usr/bin/ディレクトリの#!/bin/bashスクリプトにラップします。

その後、行を置き換えます。

10 04 * * * user /usr/bin/myPythonWrapperInBash& > /path/to/log/out 2>&1

チコールガイド

  • [-a]ファイルを追加します。
  • フラグなしで通常の呼び出しを実行すると、ファイルが上書きされ、ログが失われます。

答え2

問題はPythonスクリプトに必要な環境変数にあり、スクリプトの最初に表示され、出力される前にスクリプトが中断されたことがわかりました。

Cronには既存の環境はありません。

また、gitリポジトリをインポートするにはsshパスワードが必要でしたが、キーチェーンを使用してそれを解決できました。

ヘルプを使うこのブログ投稿そして、いくつかのbashラッパースクリプトを使用してすべてを操作して自動化することができました。

関連情報