Estou tentando executar um comando de gerenciamento do Django a partir do cron. Estou usando o virtualenv para manter meu projeto em área restrita.
Eu vi exemplos aqui e em outros lugares que mostram a execução de comandos de gerenciamento de dentro do virtualenv, como:
0 3 * * * source /home/user/project/env/bin/activate && /home/user/project/manage.py command arg
No entanto, embora o syslog mostre uma entrada quando a tarefa deveria ter sido iniciada, ela nunca é executada (o arquivo de log do script está vazio). Se eu executar a linha manualmente a partir do shell, ela funcionará conforme o esperado.
Atualmente, a única maneira de obter o comando para executar via cron é dividir os comandos e colocá-los em um script de invólucro bash idiota:
#!/bin/sh
source /home/user/project/env/bin/activate
cd /home/user/project/
./manage.py command arg
EDITAR:
O ars surgiu com uma combinação de comandos de trabalho:
0 3 * * * cd /home/user/project && /home/user/project/env/bin/python /home/user/project/manage.py command arg
Pelo menos no meu caso, invocar o script de ativação para o virtualenv não fez nada. Isso funciona, assim por diante com o show.
env
e export
todos eles em um wrapper de script bash que você chama no crontab.