Sto cercando di eseguire un comando di gestione Django da cron. Sto usando virtualenv per mantenere sandbox il mio progetto.
Ho visto esempi qui e altrove che mostrano l'esecuzione di comandi di gestione da virtualenv come:
0 3 * * * source /home/user/project/env/bin/activate && /home/user/project/manage.py command arg
Tuttavia, anche se syslog mostra una voce quando l'attività dovrebbe essere avviata, questa attività non viene mai effettivamente eseguita (il file di registro per lo script è vuoto). Se eseguo la linea manualmente dalla shell, funziona come previsto.
L'unico modo in cui riesco attualmente a far eseguire il comando tramite cron, è quello di rompere i comandi e metterli in uno stupido script wrapper bash:
#!/bin/sh
source /home/user/project/env/bin/activate
cd /home/user/project/
./manage.py command arg
MODIFICARE:
ars ha creato una combinazione funzionante di comandi:
0 3 * * * cd /home/user/project && /home/user/project/env/bin/python /home/user/project/manage.py command arg
Almeno nel mio caso, invocare lo script activ per virtualenv non ha fatto nulla. Questo funziona, così via con lo spettacolo.
env
e export
tutti in un wrapper di script bash che chiami dal crontab.