Supervisord: wie man an $ PATH anhängt

23

Ich kann anscheinend nicht herausfinden, wie ich in einer Supervisord-Programmkonfiguration an den Standardpfad anhänge.

Ich kann den Pfad zurücksetzen:

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

Aber wenn ich versuche:

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

Ich sehe, dass der Vorgesetzte nicht bewertet $PATH.

Google war aus irgendeinem Grund keine große Hilfe, ich kann nicht glauben, dass ich der erste bin, der das braucht.

Supervisord muss dafür Unterstützung haben, weißt du, was es ist?

Prody
quelle
1
@ascobol Nein, ich habe den Pfad, den ich jetzt brauche, fest
codiert
2
supervisordFühren Sie keine Shell aus, um Variablen in der Konfigurationsdatei vorzuverarbeiten. Sie können also keine Shell-Ausdrücke zum Erweitern von Variablen verwenden. Obwohl es einen Patch gibt, der das erlaubt %($PATH)und der bereits 2011 in Mailinglisten diskutiert wurde, ist AFAIK immer noch nicht im Hauptquellbaum enthalten. Um dieses Problem zu umgehen, können Sie ein Skript erstellen, mit dem die Umgebung eingerichtet und ein in Argumenten angegebenes Kommando ausgeführt wird. Dann führen Sie einfach das Skript aus dem supervisordwiecommand /usr/local/bin/setup_env_master.sh program_name arguments
Dmitry Vasilyanov
1
Die Shell-Wrapper-Lösung hat einen erheblichen Nachteil: Wenn der Supervisor versucht, den Prozess mit INT oder KILL zu stoppen, wird das Signal vom Bash-Skript und nicht vom eigentlichen Wrapper-Programm empfangen. Dies kann (und in meinem Fall) zu baumelnden Prozessen führen.
Stoiczek
@ Stoiczek einfaches Problem zu lösen. Verwenden Sie exec am Ende des Bash-Skripts und führen Sie den Befehl nicht regelmäßig aus. Also exec server --args. Sie sehen es ausnahmslos in Upstart-Jobs.
CameronNemo

Antworten:

1

Ich habe die Dokumentation durchgesehen und bin mit Dmitry einverstanden.

Die aktuelle Antwort lautet: Supervisor führt dieses Verzeichnis nicht aus, aber das Erstellen eines Wrapper-Skripts hilft.

Die Universität
quelle