Crontab - передача переменных окружения из ~ / .bashrc - PullRequest
0 голосов
/ 06 ноября 2019

Я ударил кирпичную стену crontab ... Я пытаюсь настроить crontab для запуска скрипта на python, который собирает 4 переменные из ~ / .bashrc

Ниже моего текущего crontab.

SHELL=/bin/bash
BASH_ENV=/home/m.bienias/.bashrc
# m h  dom mon dow   command
30 12,15,18 * * 1,2,3,4,5 source /home/m.bienias/.bashrc; /usr/bin/python3
/home/m.bienias/skrypty/mail_reporter/Kwanty_bez_eng.py >> /home/m.bienias/cron-log/mail_reporter.log 2>&1``` 

I have tried ```source /home/m.bienias/.bashrc;``` and ```. /home/m.bienias/.bashrc;```

Any idea what more I've could miss. Please note that I'm not sudo user on the machine where I try do run crontab

Ответы [ 2 ]

2 голосов
/ 06 ноября 2019

Я бы порекомендовал создать специальный сценарий запуска оболочки для вашей работы.

Назовите сценарий как-то как run-Kwanty_bez_eng.sh и сохраните его внутри /home/m.bienias/skrypty/mail_reporter/

Этот скрипт отвечает за установкуокружение и начало работы, поэтому грубое содержимое будет выглядеть так:

#!/usr/bin/env bash

# set environment
source /home/m.bienias/.bashrc

# start job
/usr/bin/python3 /home/m.bienias/skrypty/mail_reporter/Kwanty_bez_eng.py

... это в конечном итоге позволит вам лучше контролировать среду и даже обрабатывать ошибки.

Я бы порекомендовалразвязать зависимость от .bashrc и вашей работы. Проблема, которая может возникнуть из-за того, что задание зависит от .bashrc, заключается в том, что изменения в .bashrc могут привести к сбою задания или неправильному поведению, а .bashrc является занятым файлом с точки зрения обязанностей, которые он выполняет. Поэтому лучше создать файл среды для конкретного задания, который содержит только минимальные переменные, необходимые для выполнения задания.

0 голосов
/ 06 ноября 2019

Вы можете создать задание cron в /etc/cron.d следующим образом:

SHELL=/usr/local/bin
PATH=/usr/local/sbin:/usr/local/bin/ <continues your PATH>
30 12,15,18 * * 1,2,3,4,5 root export VAR1=value1 && export VAR2=value2 && export VAR3=value3 && export VAR4=value4 /usr/bin/python3 /path_to_script/Kwanty_bez_eng.py

Таким образом, я думаю, что это предотвратит перезагрузку переменных среды из профиля оболочки через задание cron, когда вы сделаете несколькоКонфигурация в вашем профиле оболочки.

Сценарий оболочки для запуска скрипта python, самый элегантный способ, может экспортировать переменные, которые вам нужны, хотя сделать source all .bashrc.

Если вы предпочитаете создатьчерез crontab -e, похоже, он выглядит так же, только без команды пользователя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...