Próbuję uruchomić polecenie zarządzania Django z crona. Korzystam z virtualenv, aby utrzymać swój projekt w trybie piaskownicy.
Widziałem przykłady tu i gdzie indziej, które pokazują uruchamianie poleceń zarządzania z poziomu virtualenv, takich jak:
0 3 * * * source /home/user/project/env/bin/activate && /home/user/project/manage.py command arg
Jednak pomimo tego, że syslog pokazuje wpis, kiedy zadanie powinno się rozpocząć, zadanie to nigdy się nie uruchamia (plik dziennika skryptu jest pusty). Jeśli uruchomię linię ręcznie z powłoki, działa ona zgodnie z oczekiwaniami.
Jedynym sposobem, w jaki mogę obecnie uruchomić polecenie za pomocą crona, jest rozbicie poleceń i umieszczenie ich w skrypcie otępiającym bash:
#!/bin/sh
source /home/user/project/env/bin/activate
cd /home/user/project/
./manage.py command arg
EDYTOWAĆ:
ars wymyślił działającą kombinację poleceń:
0 3 * * * cd /home/user/project && /home/user/project/env/bin/python /home/user/project/manage.py command arg
Przynajmniej w moim przypadku wywołanie skryptu aktywacyjnego dla virtualenv nic nie zrobiło. To działa, podobnie jak w przypadku serialu.
env
i export
wszystkie z nich w pakiecie skryptów bash, który wywołujesz z crontab.