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?


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:


17

Diese Funktion wurde kürzlich zu Supervisor hinzugefügt

environment = PATH = "/ home / site / surroundings / master / bin:% (ENV_PATH) s"

https://github.com/Supervisor/supervisor/blob/master/supervisor/skel/sample.conf#L8

Siehe auch /programming/12900402/supervisor-and-environment-variables


Es wurde jedoch noch nicht veröffentlicht (getaggt): github.com/Supervisor/supervisor/issues/599
tersmitten

Es wurde gestern markiert: pypi.python.org/pypi/supervisor
tersmitten

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.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.