Supervisord: come aggiungere a $ PATH


23

Non riesco a capire come aggiungere al percorso predefinito in una configurazione del programma supervisord.

Posso ripristinare il percorso:

environment=PATH="/home/site/environments/master/bin"

Ma quando provo:

environment=PATH="/home/site/environments/master/bin:$PATH"

Vedo che supervisord non valuta $PATH.

Google non è stato di grande aiuto su questo per qualche motivo, non posso credere di essere il primo a averne bisogno.

Il supervisore deve avere supporto per questo, hai idea di cosa sia?


1
@ascobol no, ho programmato il percorso di cui ho bisogno, per ora
Prody,

2
supervisordnon eseguire la shell per preelaborare le variabili nel file di configurazione, quindi non è possibile utilizzare le espressioni della shell per espandere le variabili. Anche se esiste una patch che consente di farlo %($PATH)ed è stata discussa nelle mailing list nel 2011, ma AFAIK non è ancora inclusa nella struttura principale. Per ovviare al problema, è possibile creare uno script che configuri l'ambiente ed esegua un comando fornito in argomenti. Quindi esegui la sceneggiatura dal supervisordsimilecommand /usr/local/bin/setup_env_master.sh program_name arguments
Dmitry Vasilyanov il

1
C'è un significativo svantaggio per la soluzione shell wrapper: quando il supervisore proverà a fermare il processo usando INT o KILL, il segnale sarà ricevuto dallo script bash e non dall'effettivo programma wrapper. Questo può portare (e porta nel mio caso) a processi sospesi.
Stoiczek,

@stoiczek problema facile da risolvere. Utilizzare exec alla fine dello script bash, non eseguire semplicemente il comando regolarmente. Così exec server --args. Lo vedi invariabilmente nei lavori iniziali.
CameronNemo,

Risposte:



1

Ho esaminato la documentazione e sono d'accordo con Dmitry.

La risposta attuale è: il supervisore non fa questa directory, ma sarà utile creare uno script wrapper.

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.