Przygotuj środowisko odczytu z / etc / environment dla usługi


17

Jaki jest najlepszy sposób, aby zapewnić zmienne środowiskowe zdefiniowane w /etc/environmentdo upstart usługi?

Wydaje mi się, że po prostu ich pozyskiwanie .w sekcji skryptu nie działa, ponieważ skrypty są wykonywane przez, shktóre wymagałyby dodatkowego exportprzed każdą definicją ...

Odpowiedzi:


16

W końcu dostałem odpowiedź na #upstartkanale IRC. W pewnym momencie upstart otrzyma odpowiednią obsługę PAM, a zatem /etc/environmentsam się przeczyta . Do tego czasu sztuczką jest wykonanie polecenia za pomocą su. suużywa PAM i skonfiguruje odpowiednie środowisko. Przykład:

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

Dziękujemy za opublikowanie odpowiedzi, pomogłeś mi w dokładnie tym samym problemie.
Maxim Veksler,

błąd:su: must be run from a terminal
Kuf

3

Zwykle używam eval $(cat /etc/environment | sed 's/^/export /')

Pobiera każdą linię /etc/environment, dodaje exporti ocenia:

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

Dlaczego używasz exec, a nie tylko umieszczasz eksport bezpośrednio w bloku skryptu?
Guss,

1

Dodaj to do skryptu:

. /etc/environment
export VAR1 VAR2 VAR3

gdzie potrzebne zmienne są określone zamiast symboli zastępczych w stylu „VAR1”.


2
W ten sposób muszę ręcznie zsynchronizować konfigurację początkową i środowisko / etc / w synchronizacji, co (moim zdaniem) nie jest lepsze niż dwukrotne zdefiniowanie zmiennych ...
Nikratio

Nie użyłbym /etc/environmentdo zdefiniowania wszystkich potrzebnych zmiennych. Pozostaw to jako plik statyczny. W moim systemie mogłem znaleźć tylko kilka skryptów, które i tak go używają. Utwórz plik o nazwie coś /etc/environment.locali umieścić swoje zmienne i eksportu tam i źródło , że plik. Następnie musisz zachować tylko ten jeden plik.
Wstrzymano do odwołania.

/ etc / environment jest odczytywany przez pam_env.so (a nie przez żadne skrypty), więc jest dostępny dla każdego logowania. Niestety, tylko programy uruchomione przez upstart nie mają dostępu do tego pliku przez defaulht.
Nikratio
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.