Supervisord: как добавить в $ PATH

23

Я не могу понять, как добавить к пути по умолчанию в конфигурации программы супервизора.

Я могу сбросить путь:

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

Но когда я пытаюсь:

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

Я вижу, что руководитель не оценивает $PATH.

Google почему-то не сильно помог в этом, я не могу поверить, что я первый, кому это нужно.

Надзорный орган должен иметь поддержку для этого, есть идеи, что это такое?

Prody
источник
1
@ascobol Нет, я жестко закодировал нужный мне путь, пока
Prody
2
supervisordне запускайте shell для предварительной обработки переменных в файле конфигурации, поэтому вы не можете использовать выражения оболочки для расширения переменных. Хотя есть патч, который позволяет это делать, %($PATH)и он обсуждался в списках рассылки еще в 2011 году, но AFAIK он все еще не включен в основное дерево исходных текстов. В качестве обходного пути вы можете создать сценарий, который будет настраивать среду и выполнять команду, указанную в аргументах. Тогда вы просто запускаете сценарий из supervisordподобногоcommand /usr/local/bin/setup_env_master.sh program_name arguments
Дмитрий Василянов
1
Существует существенный недостаток решения оболочки оболочки - когда супервизор попытается остановить процесс, используя INT или KILL, сигнал будет получен сценарием bash, а не самой упакованной программой. Это может привести (и приводит в моем случае) к висящим процессам.
Stoiczek
@stoiczek легко решить проблему. Используйте exec в конце скрипта bash, не просто регулярно запускайте команду. Так exec server --args. Вы видите это в начинающих рабочих местах неизменно.
CameronNemo

Ответы:

17

Эта функция была недавно добавлена ​​в Supervisor

среда = PATH = "/ главная / сайт / среда / мастер / бен:% (ENV_PATH) s"

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

Смотрите также /programming/12900402/supervisor-and-environment-variables

Томас Грейнджер
источник
Но это еще не было выпущено (помечено): github.com/Supervisor/supervisor/issues/599
tersmitten
Это было отмечено вчера: pypi.python.org/pypi/supervisor
tersmitten
1

Я ознакомился с документацией и согласен с Дмитрием.

Текущий ответ: супервизор не делает этот каталог, но поможет создание сценария оболочки.

Theuni
источник