J'ai une exigence très simple pour laquelle j'ai essayé de chercher une solution, mais je n'ai pas pu obtenir de solution définie standard. Ce que je veux savoir, c'est pour ma question ci-dessous quelle est la solution correct
.
Question : Je dois exécuter un script cron (qui est un script python) à l'aide de crontab.
en utilisant crontab -e, j’ai ajouté cette ligne à mon fichier cron:
* * * * * /usr/bin/python /srv/x/y/src/run.py > /tmp/listener.log 2>&1
le script démarre mais utilise des variables d'environnement. Je reçois une erreur dans le fichier journal que les vars env ne sont pas définis?
où devrais-je définir mon env vras? J'ai même essayé de définir dans .bashrc
mais toujours la même erreur. cronjob ne peut pas le trouver.
qu'est-ce que je rate?
Ecrivez un petit script bash mypythonscript
composé de:
#!/bin/bash
set ENVIRONMENT_VARIABLE_1=...
set ENVIRONMENT_VARIABLE_2=...
/usr/bin/python /srv/x/y/src/run.py > /tmp/listener.log 2>&1
Rendez-le exécutable:
chmod +x mypythonscript
Dans la crontab, remplacez la ligne par
* * * * * /path/to/mypythonscript
Plutôt que de conserver les définitions de variable à deux endroits, enveloppez votre appel de programme dans un simple script bash
qui identifie votre ~/.bashrc
:
#!/bin/bash
source $HOME/.bashrc
/usr/bin/python /srv/x/y/src/run.py > /tmp/listener.log 2>&1
chmod +x
le script et exécutez-le à partir de votre crontab
.