Cron und virtualenv

Ich versuche zu laufen eine Django-management-Befehl von cron. Ich bin mit virtualenv zu halten mein Projekt in der Sandbox.

Ich habe schon Beispiele gesehen, hier und anderswo, die zeigen, dass laufen-management-Befehle innerhalb von virtualenv ist wie:

0 3 * * * source /home/user/project/env/bin/activate && /home/user/project/manage.py command arg

Jedoch, obwohl syslog zeigt einen Eintrag, wenn Sie die Aufgabe haben sollte, begann, diese Aufgabe eigentlich nie läuft (in der log-Datei für das Skript ist leer). Wenn ich die Zeile manuell von der shell aus, funktioniert es wie erwartet.

Nur so kann ich derzeit bekommen Sie den Befehl zum ausführen über cron, zu brechen, die Befehle auf und legen Sie in eine dumme bash-wrapper-Skript:

#!/bin/sh
source /home/user/project/env/bin/activate
cd /home/user/project/
./manage.py command arg

EDIT:

ars kam mit einer Kombination der Befehle:

0 3 * * * cd /home/user/project && /home/user/project/env/bin/python /home/user/project/manage.py command arg

Zumindest in meinem Fall, den Aufruf der activate-Skript für die virtualenv nichts getan. Das funktioniert, also weiter mit der show.

Kommentar zu dem Problem
Ein Unterschied, den ich sehe, ist, dass das Skript ausgeführt wird manage.py mit /home/user/Projekt als das aktuelle Arbeitsverzeichnis. Ihre cron Befehl laufen Sie mit Ihrem home-Verzeichnis als das cwd. Vielleicht die log-Datei ist es? Kommentarautor: rettops
Eigentlich der log-Pfad ist absolut definiert, es ist einfach nicht erstellt/angefügt, weil das script nicht ausgeführt wird. Kommentarautor: John-Scott
Eine quick-and-dirty-Lösung cron-Ausgaben ist um einen dump Ihrer Umgebung (in dem Ihr Befehl ist unerklärlich arbeiten) mit env und export Sie alle in einer bash-Skript-wrapper, die Sie nennen, aus der crontab. Kommentarautor: jberryman

InformationsquelleAutor der Frage John-Scott | 2010-07-20

Schreibe einen Kommentar