Ubuntu: cronjob cannot find environment variables defined in .bashrc



Question:

I have a very simple requirement which i tried looking for solution but couldn't get any standard defined solution . what i want to know is for my question below what is the correct solution.

Question: i am required to run a cronjob ( which is a python script ) using crontab.

using crontab -e i added this line to my cron file:

* * * * * /usr/bin/python /srv/x/y/src/run.py > /tmp/listener.log 2>&1  

the script starts but it is using environment variables inside. i get an error in log file that the env vars are not defined?

where should i define my env vras? i even tried to define in .bashrc but still the same error. cronjob cannot find it.

what am i missing?


Solution:1

Write a small bash script mypythonscript consisting of:

#!/bin/bash  set ENVIRONMENT_VARIABLE_1=...  set ENVIRONMENT_VARIABLE_2=...  /usr/bin/python /srv/x/y/src/run.py > /tmp/listener.log 2>&1  

Make it executable:

chmod +x mypythonscript  

In the crontab replace the line by

* * * * * /path/to/mypythonscript  


Solution:2

Rather than keeping the variable definitions in two places, wrap your program call in a simple bash script that sources your ~/.bashrc:

#!/bin/bash  source $HOME/.bashrc  /usr/bin/python /srv/x/y/src/run.py > /tmp/listener.log 2>&1    

chmod +x the script, and run it from your crontab.


Note:If u also have question or solution just comment us below or mail us on toontricks1994@gmail.com
Previous
Next Post »