This is what crontab -l
displays:
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
*/1 * * * * /bin/bash /home/azureuser/project/negev/restart.sh >> /home/azureuser/out.txt 2>&1
This is the content of the restart.sh
file:
#!/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/home/azureuser/project/negev
variable=$(ps x aux | grep -i 'main.py' | wc -l)
if test $variable=='1'
then
/home/azureuser/miniconda3/envs/negev/bin/python '/home/azureuser/project/negev/main.py'
fi
When I run main.py
or restart.sh
everything is super. However, when I go check the out.txt
file I see this error:
Traceback (most recent call last):
...
from logger import logger, logger_format
File "/home/azureuser/project/negev/logger.py", line 8, in <module>
log_path = config['LOGGER']['log_path']
File "/home/azureuser/miniconda3/envs/negev/lib/python3.7/configparser.py", line 958, in __getitem__
raise KeyError(key)
KeyError: 'LOGGER
The config file is in /home/azureuser/project/negev/user
I cannot understand why this is happening only when using crontab
, and I have failed to find a solution anywhere.
EDIT: The problem is related to me using relative paths in the code and not the absolute paths. Is there a way to overcome this without changing every single relative path in my project?