Supervisord: jak dołączyć do $ PATH

23

Nie mogę wymyślić, jak dołączyć do domyślnej ścieżki w konfiguracji programu nadzoru.

Mogę zresetować ścieżkę:

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

Ale kiedy próbuję:

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

Widzę, że superwizor nie ocenia $PATH.

Z jakiegoś powodu Google nie był w tym bardzo pomocny. Nie mogę uwierzyć, że jestem pierwszą osobą, która tego potrzebuje.

Nadzorca musi mieć na to wsparcie, jakiś pomysł, co to jest?

Prody
źródło
1
@ascobol nie, na stałe zapisałem ścieżkę, której potrzebuję
Prody
2
supervisordnie uruchamiaj powłoki w celu wstępnego przetwarzania zmiennych w pliku konfiguracyjnym, więc nie możesz używać wyrażeń powłoki do rozszerzania zmiennych. Chociaż istnieje łatka, która pozwala to zrobić %($PATH)i była omawiana na listach mailingowych w 2011 roku, ale AFAIK nadal nie jest dołączony do głównego drzewa źródeł. Aby obejść ten problem, możesz utworzyć skrypt, który skonfiguruje środowisko i wykona polecenie podane w argumentach. Następnie wystarczy uruchomić skrypt z supervisordpodobnegocommand /usr/local/bin/setup_env_master.sh program_name arguments
Dmitrija Wasiljanowa
1
Istnieje znacząca wada rozwiązania opakowania powłoki - gdy nadzorca będzie próbował zatrzymać proces za pomocą INT lub KILL, sygnał zostanie odebrany przez skrypt bash, a nie faktycznie zawinięty program. Może to prowadzić (i w moim przypadku prowadzi) do zwisających procesów.
stoiczek
@stoiczek łatwy problem do rozwiązania. Użyj exec na końcu skryptu bash, nie uruchamiaj regularnie polecenia. Tak exec server --args. Niezmiennie widać to w nowych pracach.
CameronNemo

Odpowiedzi:

1

Przejrzałem dokumentację i zgadzam się z Dmitrijem.

Obecna odpowiedź brzmi: przełożony nie robi tego katalogu, ale pomocne będzie utworzenie skryptu opakowania.

Theuni
źródło