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.
enve exporttutti in un wrapper di script bash che chiami dal crontab.