Я намагаюся запустити команду управління Django з cron. Я використовую virtualenv, щоб тримати мій проект пісочницею.
Я бачив приклади тут і в інших місцях, які показують запущені команди управління зсередини virtualenv на зразок:
0 3 * * * source /home/user/project/env/bin/activate && /home/user/project/manage.py command arg
Однак, хоча syslog показує запис, коли завдання повинно було бути запущене, це завдання ніколи насправді не запускається (файл журналу для сценарію порожній). Якщо я запускаю лінію вручну з оболонки, вона працює як очікувалося.
Єдиний спосіб, коли я можу отримати команду для запуску через cron, - це розбити команди і помістити їх у німий сценарій баш-обгортки:
#!/bin/sh
source /home/user/project/env/bin/activate
cd /home/user/project/
./manage.py command arg
Редагувати:
ars придумав робочу комбінацію команд:
0 3 * * * cd /home/user/project && /home/user/project/env/bin/python /home/user/project/manage.py command arg
Принаймні в моєму випадку, виклик сценарію активації для virtualenv нічого не робив. Це працює, так і з шоу.
env
і export
все це в оболонковій скрипті bash, яку ви дзвоните з crontab.