Crontab не получает мои текущие переменные окружения
Мне нужно задание cron, все уже настроено, и cron также работает, но, к сожалению, cron не получает мои переменные окружения. Я получаю переменные окружения, используя os, и они работают нормально во всем проекте, но не в моем cron.
settings.py
SECRET_KEY = os.environ.get('SECRET_KEY')
# Cron Jobs
CRONJOBS = [
('* * * * *', 'projects.cron.notifications_cron', '>> /cron/django_cron.log 2<&1')
]
crontab -e
* * * * /usr/local/bin/python /app/manage.py crontab run 744fbefdbf3ad30bec13
error in log file
raise ImproperlyConfigured("The SECRET_KEY setting must not be empty.")
когда я устанавливаю SECRET_KEY жесткую кодировку в моем settings.py, то он работает нормально, но я хочу получить его из переменных среды.
Вы можете назначить свои переменные окружения в файл окружения crontab (crontab -e), поэтому я преобразовываю все свои переменные окружения в env.txt и объединяю файл окружения crontab в этот файл env.txt и заменяю файл окружения crontab своим env.txt.
crontab -e по умолчанию:
0 */24 * * * /usr/local/bin/python /app/manage.py crontab run 5d758d881d8f93b61f4d1b6a43eb72f6 >> /cron/django_cron.log 2<&1 # django-cronjobs for app
если вы назначите какую-нибудь ПЕРЕМЕННУЮ в этом файле, как показано ниже, то кронтаб получит это окружение.
VARIABLE=value
0 */24 * * * /usr/local/bin/python /app/manage.py crontab run 5d758d881d8f93b61f4d1b6a43eb72f6 >> /cron/django_cron.log 2<&1 # django-cronjobs for app
вот команда bash для достижения этого
$ printenv > env.txt # this will add all your environment variables in to env.txt
$ cat /var/spool/cron/crontabs/root >> env.txt # this will merge crontab environment file with your env.txt
$ cat env.txt > /var/spool/cron/crontabs/root # this will replace the crontab environment file with your env.txt
Это единственное решение, которое я создал самостоятельно, надеюсь, оно поможет вам, ребята. спасибо
Определите вашу глобальную переменную в crontab следующим образом,
crontab -e
myVar='my variable reference'
Если ваша переменная не является постоянной, значит, она динамична по своей природе.
Выполните следующие шаги:
Найдите файл crontab командой ниже.
sudo find / -type d -name crontabs
cd <path>
Здесь живет ваш файл cronjob, просто vi или nano по sudo. Дайте разрешение с помощью sudo chown <username>:<groups> <filename> или sudo chmod 755 <filename>
Процесс обновления переменной. Следующий ниже код на языке Bash, поэтому вы можете использовать его непосредственно в ваших bash файлах, которые можно обрабатывать или запускать в других инструментах, таких как python, с помощью библиотеки help subprocess.
lineNumber=$(grep -n 'myVar=' <file-path>)
Измените номер строки с вашим новым myVar на его обновленное значение.
sed -i '/$lineNumbers/.*/myVar=myValue/' <file-path>