Иметь выскочку среды чтения из / etc / environment для службы


17

Каков наилучший способ обеспечить переменные окружения , определенные в /etc/environmentк выскочке службе?

Я думаю, что простое использование их .в разделе сценариев не работает, потому что сценарии выполняются, shчто потребует дополнительного exportперед каждым определением ...

Ответы:


16

Я наконец получил ответ на канале #upstartIRC. В какой-то момент выскочка получит надлежащую поддержку PAM и, таким образом, прочитает /etc/environmentсама себя. До тех пор уловка состоит в том, чтобы выполнить команду с su. suиспользует PAM и настроит соответствующую среду. Пример:

script 
    exec su root -c /usr/sbin/job_needing_envs
end script

Спасибо за публикацию ответа, вы помогли мне в том же вопросе.
Максим Векслер

ошибка:su: must be run from a terminal
Куф

3

Я склонен использовать eval $(cat /etc/environment | sed 's/^/export /')

Он берет каждую строку /etc/environment, добавляет exportи оценивает ее:

script
exec /bin/bash <<'EOT'
  eval $(cat /etc/environment | sed 's/^/export /')
  do_what_you_need_to
EOT
end script

Почему вы используете exec, а не просто помещаете экспорт прямо в блок скрипта?
Гусс

1

Добавьте это к вашему сценарию:

. /etc/environment
export VAR1 VAR2 VAR3

где необходимые переменные указываются вместо заполнителей стиля "VAR1".


2
Таким образом, я должен вручную синхронизировать конфигурацию upstart и / etc / environment, что (на мой взгляд) не лучше, чем двойное определение переменных ...
Nikratio

Я бы не /etc/environmentстал определять все необходимые переменные. Оставьте это как статический файл. В моей системе я мог найти только несколько сценариев, которые все равно его используют. Создайте файл с именем что-то вроде, /etc/environment.localи поместите туда свои переменные и экспорты и поставьте этот файл. Тогда вам нужно только сохранить этот один файл.
Приостановлено до дальнейшего уведомления.

/ etc / environment читается pam_env.so (а не скриптами), поэтому он доступен для любого входа в систему. К сожалению, только программы, запущенные upstart, не имеют доступа к этому файлу по умолчанию.
Никратио
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.