У меня есть очень простое требование, которое я пытался искать решение, но не мог получить, любой стандарт определил решение. то, что я хочу знать, для моего вопроса ниже того, что correct
решение.
Вопрос: я требуюсь выполнить cronjob (который является сценарием Python), использующий crontab.
с помощью crontab-e я добавил эту строку к своему файлу крона:
* * * * * /usr/bin/python /srv/x/y/src/run.py > /tmp/listener.log 2>&1
сценарий запускается, но он использует переменные среды внутри. я получаю ошибку в файле журнала, что огибающий Вар не определяется?
где я должен определить свой ENV vras? я даже пытался определить в .bashrc
но тем не менее та же ошибка. cronjob не может найти его.
что я пропускаю?
Запишите маленький сценарий mypythonscript
удара, состоящий из:
#!/bin/bash
set ENVIRONMENT_VARIABLE_1=...
set ENVIRONMENT_VARIABLE_2=...
/usr/bin/python /srv/x/y/src/run.py > /tmp/listener.log 2>&1
Делают это исполняемым файлом:
chmod +x mypythonscript
В crontab заменяют строку
* * * * * /path/to/mypythonscript
Вместо того, чтобы сохранять определения переменной в двух местах, перенесите свой вызов программы в простое bash
сценарий, который получает Ваш ~/.bashrc
:
#!/bin/bash
source $HOME/.bashrc
/usr/bin/python /srv/x/y/src/run.py > /tmp/listener.log 2>&1
chmod +x
сценарий, и выполненный это от Вашего crontab
.