2011-09-15 12 views
1

通常の場所でpyファイルとしてカスタム管理コマンドを作成しました。django-chronographスクリプトは、cronジョブや手動でアクセス許可の問題で実行されません。

クロノグラフが適切な場所に取り付けられており、同期されています。

また、私はそれが正しいかもしれないと思うと、次のことを試みたがないいただきました!私はしました

* * * * * /home/shofty/virtualenvs/webbricks/bin/chronograph -e /home/shofty/virtualenvs/webbricks/bin/activate_this.py -p /home/shofty/virtualenvs/webbricks/website/manage.py cron 

ドキュメントで、次の

* * * * * /home/shofty/virtualenvs/webbricks/bin/chronograph -e /home/shofty/virtualenvs/webbricks/bin/activate_this.py -p /home/shofty/virtualenvs/webbricks/website 

アイブとしてcronジョブを作成しましたmanage.py cronが追加されました。これは、実行する必要のあるジョブを探すためにクロノグラフ機能に指示するために実行するものです。もし私の仮想envの私はmanage.py cronを実行し、それは動作し、ジョブが実行されます。

両方のジョブが実行に失敗しましたが、手動でsuまたは自分のユーザーとして実行しようとすると、アクセスが拒否されたために失敗します。彼らがどのような許可を参照しているか分からない。誰もこの前に来る?

+0

「/tmp/chrono.log」を行の末尾に追加し、そのファイルの末尾に-fを追加してください。それはあなたにいくつかのより多くの情報を与えるはずです。 –

+0

にはアンパサンドは必要ありません。スクリプトによって詳細な出力を得るためにcron行に-lを追加してください... – bytejunkie

答えて

1

これに対する答えは、chronograph.shがクロノグラフに取って代わられたことです。これはおそらくenvを活性化することができるにもかかわらず、私が知る限り、python 2.5に組み込まれていないが、2.6に入っているargparseをインポートするのに十分な早さではなかった。クロノグラフスクリプトの引数の正しい組み合わせを得ることに至りました。これは、参照用に-pと-eですが、-sではありません。

私はrootとしてスクリプトを実行しなければなりませんでしたが、ユーザーvirtualenv内のスクリプトをターゲットにしていました。

最後に、パッケージディレクトリのサイトパスをクロノグラフスクリプトに追加する必要がありました。私がそれをするまで、argparseを見つけることができませんでした。

0

これは、ファイルのアクセス権に関する問題がある場合に便利です。 File permission basics

cronジョブを適切なユーザー/サービスとして実行しようとしましたか?

他のLinuxユーザーのcrontabエントリを編集するには、rootにログインし、以下に示すように-u {username} -eを使用します。

あなたは仮想環境を使用しているとして
[email protected]# crontab -u otheruser -e 
@monthly /home/otheruser/fedora/bin/monthly-backup 
00 09-18 * * * /home/otheruser/ubuntu/bin/check-db-status 
0

: 含まはchronograph.shというスクリプトです。このファイル をプロジェクトディレクトリにコピーします。

あなたがこのスクリプトを開き、仮想環境の activate スクリプトへのパスを変更する必要があります::

$PROJECT_PATH"/home/shofty/virtualenvs/webbricks/bin/activate" 

このファイルが実行可能であることを確認し、その後、 を実行するために、あなたのcrontabを更新

cp chronograph.sh ~/virtualenvs/webbricks/chronograph.sh 

スクリプト。その後

chmod a-x chronograph.sh 

: のcrontab -e

* * * * * /home/shofty/virtualenvs/webbricks/chronograph.sh /home/shofty/virtualenvs/webbricks/website 

あなたが最初の引数としてスクリプトに/path/to/your/projectを渡すことを確認します。 これにより、cronにプロジェクトディレクトリの検索に問題がないことが保証されます。

+0

をactivate文のパスに入れても、ファイルの接尾辞はありません。それは正しい? – bytejunkie

+0

クロノグラフ.shはクロノグラフに取って代わりました。これはおそらくenvを活性化することができるにもかかわらず、私が知る限り、python 2.5に組み込まれていないが、2.6に入っているargparseをインポートするのに十分な早さではなかった。クロノグラフスクリプトの引数の正しい組み合わせを得ることに至りました。これは参照用に-pと-eですが、-sではなく-sです。 – bytejunkie

0

os権限が拒否されているか、403を受信して​​いますか?それが403の場合は、DjangoのCSRF保護が原因と考えられます。スクリプトが特定のビューに投稿されている場合は、csrf_exempt

と表示されていることを確認してください。許可が拒否されたファイルシステム/オペレーティングシステムレベルの場合、私は本当にわかりません。

関連する問題