Я пытаюсь запустить команду управления Django из cron. Я использую virtualenv для сохранения моего проекта в песочнице.Cron and virtualenv
Я видел примеры здесь и в других местах, которые показывают выполнение команд управления внутри virtualenv как:
0 3 * * * source /home/user/project/env/bin/activate && /home/user/project/manage.py command arg
Однако, несмотря на то, системный журнал показывает запись, когда задача должна быть запущена, эта задача никогда на самом деле работает (файл журнала для скрипта пуст). Если я запускаю строку вручную из оболочки, она работает так, как ожидалось.
Единственный способ, которым я могу себе получить команду для запуска через хрон, чтобы разбить команды и поместить их в тупой сценарий Баш-оболочки:
#!/bin/sh
source /home/user/project/env/bin/activate
cd /home/user/project/
./manage.py command arg
EDIT:
АРС придумал с рабочей комбинации команд:
0 3 * * * cd /home/user/project && /home/user/project/env/bin/python /home/user/project/manage.py command arg
по крайней мере, в моем случае, вызов сценария реактивировать для virtualenv ничего не сделал. Это работает, так и с шоу.
Одно различие, которое я вижу в том, что скрипт будет работать manage.py с/главная/пользователя/проекта в качестве текущего рабочего каталога. Ваша команда cron будет запущена с вашим домашним каталогом как cwd. Может быть, файл журнала есть? – rettops
Фактически путь журнала определен абсолютно, он просто не создан/добавлен, потому что скрипт не запущен. –
Быстрое и грязное решение проблем cron - это сброс вашей среды (в которой ваша команда необъяснимо работает) с 'env' и' export' их всех в оболочке сценария bash, которую вы вызываете из crontab. – jberryman