J'ai un fichier crontab censé exécuter une commande Django après le chargement de l'environnement virtuel du projet :
*/1 * * * * source /home/virtualenvs/mydjangoproject-venv/bin/activate && python /home/www/production/mydjangoproject/manage.py mydjangocommand
...mais cela ne fait absolument rien. Le journal cron ne révèle aucun problème particulier :
Mar 13 19:51:01 110 CRON[23807]: (root) CMD (source /home/virtualenvs/mydjangoproject-venv/bin/activate && python /home/www/production/mydjangoproject/manage.py mydjangocommand)
Inutile de préciser que la commande elle-même fonctionne parfaitement lorsqu'elle est copiée-collée dans le Shell.
Je sais que c'est lié aux variables d'environnement de ma crontab, mais je suis très peu instruit en la matière, et je n'ai aucune idée de ce qu'il faut faire, en particulier lorsqu'il est exécuté sous un environnement virtuel Python. Doit-il utiliser les variables d'environnement de l'utilisateur ? Celles de l'environnement virtuel ? Comment mettre cela en œuvre ? Merci !
NB : Si cela peut aider, j'ai la sortie suivante des variables d'environnement de ma crontab (lorsque j'exporte "env" vers un fichier via la crontab) :
HOME=/root
LOGNAME=root
PATH=/usr/bin:/bin
LANG=en_US.UTF-8
SHELL=/bin/sh
LC_ALL=en_US.UTF-8
PWD=/root
Et les variables d'environnement suivantes sous l'environnement virtuel du projet :
TERM=xterm-256color
SHELL=/bin/bash
SSH_CLIENT=x.x.x.x 53007 22
OLDPWD=/root/production/mydjangoproject
SSH_TTY=/dev/pts/0
LC_ALL=en_US.UTF-8
USER=root
VIRTUAL_ENV=/home/virtualenvs/mydjangoproject-venv
MAIL=/var/mail/root
PATH=/home/virtualenvs/mydjangoproject-
venv/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
PWD=/root
LANG=en_US.UTF-8
PS1=(mydjangoproject-venv)${debian_chroot:+($debian_chroot)}\u@$(hostname -f):\w\$
SHLVL=1
HOME=/root
LS_OPTIONS=--color=auto --group-directories-first
LOGNAME=root
SSH_CONNECTION=x.x.x.x 53007 x.x.x.x 22
LC_CTYPE=en_US.UT
0 votes
Duplicata possible de Pourquoi ma crontab ne fonctionne-t-elle pas et comment puis-je la dépanner ?
1 votes
@AndrewSchulman Cette situation n'est pas du tout couverte par cette question. Un oubli quelque peu embarrassant.