Chiedi a upstart di leggere l'ambiente da / etc / environment per un servizio


17

Qual è il modo migliore per fornire le variabili d'ambiente definite in /etc/environmentun servizio upstart ?

Penso che il semplice reperirli .in una sezione di script non funzioni, perché gli script vengono eseguiti per shcui sarebbe necessario un ulteriore exportdavanti a ogni definizione ...

Risposte:


16

Finalmente ho ricevuto una risposta sul #upstartcanale IRC. Ad un certo punto, upstart otterrà il supporto PAM adeguato e quindi leggerà /etc/environmentse stesso. Fino ad allora, il trucco è eseguire il comando con su. suutilizza PAM e imposterà l'ambiente adeguato. Esempio:

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

Grazie per aver pubblicato la risposta, mi hai aiutato esattamente nello stesso problema.
Maxim Veksler,

errore:su: must be run from a terminal
Kuf

3

Tendo a usare eval $(cat /etc/environment | sed 's/^/export /')

Accetta ogni riga /etc/environment, antepone exporte la valuta:

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

Perché usi exec e non metti l'esportazione direttamente nel blocco di script?
Guss,

1

Aggiungi questo al tuo script:

. /etc/environment
export VAR1 VAR2 VAR3

dove le variabili necessarie sono specificate al posto dei segnaposto di stile "VAR1".


2
In questo modo devo sincronizzare manualmente la configurazione upstart e / etc / environment, che (secondo me) non è meglio che definire due volte le variabili ...
Nikratio

Non userei /etc/environmentper definire tutte le variabili necessarie. Lascialo come un file statico. Sul mio sistema, sono riuscito a trovare solo alcuni script che lo utilizzano comunque. Crea un file chiamato qualcosa del genere /etc/environment.locale metti le tue variabili ed esportazioni lì e sorgente quel file. Allora devi solo sostenere che un file.
In pausa fino a nuovo avviso.

/ etc / environment viene letto da pam_env.so (e non da alcuno script), quindi è disponibile per qualsiasi login. Sfortunatamente, solo i programmi avviati da upstart non hanno accesso a quel file per impostazione predefinita.
Nikratio,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.