Ich versuche, einen Django-Verwaltungsbefehl von cron aus auszuführen. Ich verwende virtualenv, um mein Projekt in einer Sandbox zu halten.
Ich habe hier und anderswo Beispiele gesehen, die das Ausführen von Verwaltungsbefehlen innerhalb von virtualenv zeigen, wie:
0 3 * * * source /home/user/project/env/bin/activate && /home/user/project/manage.py command arg
Obwohl syslog einen Eintrag anzeigt, wann die Aufgabe hätte gestartet werden sollen, wird diese Aufgabe nie ausgeführt (die Protokolldatei für das Skript ist leer). Wenn ich die Zeile manuell über die Shell ausführe, funktioniert sie wie erwartet.
Die einzige Möglichkeit, den Befehl derzeit über cron auszuführen, besteht darin, die Befehle aufzuteilen und in ein dummes Bash-Wrapper-Skript zu schreiben:
#!/bin/sh
source /home/user/project/env/bin/activate
cd /home/user/project/
./manage.py command arg
BEARBEITEN:
ars hat eine funktionierende Kombination von Befehlen entwickelt:
0 3 * * * cd /home/user/project && /home/user/project/env/bin/python /home/user/project/manage.py command arg
Zumindest in meinem Fall hat das Aufrufen des Aktivierungsskripts für die virtuelle Umgebung nichts bewirkt. Das funktioniert so weiter mit der Show.
env
und export
allen in einem Bash-Skript-Wrapper zu sichern, den Sie von der Crontab aus aufrufen.