スーパーバイザー:$ PATHに追加する方法


23

スーパーバイザープログラムの設定でデフォルトパスに追加する方法がわからないようです。

パスをリセットできます:

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

しかし、私がしようとすると:

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

Supervisordが評価しないことがわかり$PATHます。

Googleはなんらかの理由でこれについて大きな助けにはなりませんでした。私がこれを必要とする最初の人だとは信じられません。

スーパーバイザーはこれをサポートする必要がありますが、それが何であるか考えていますか?


1
いや@ascobol、私は今のところ、私は必要なパスをハードコーディングしました
Prody

2
supervisord構成ファイル内の変数を前処理するためにシェルを実行しないでください。そのため、シェル式を使用して変数を展開することはできません。できるパッチがあり%($PATH)、2011年にメーリングリストで議論されましたが、知る限りではメインラインのソースツリーにはまだ含まれていません。回避策として、環境をセットアップし、引数で指定されたコマンドを実行するスクリプトを作成できます。次に、あなただけのスクリプトを実行するsupervisordようにcommand /usr/local/bin/setup_env_master.sh program_name arguments
ドミトリーVasilyanov

1
シェルラッパーソリューションには重大な欠点があります。スーパーバイザーがINTまたはKILLを使用してプロセスを停止しようとすると、実際のラップされたプログラムではなく、bashスクリプトによって信号が受信されます。これは、宙ぶらりんのプロセスにつながる可能性があります(私の場合はリードしています)。
stoiczek

@stoiczek簡単に解決できる問題。コマンドを定期的に実行するだけでなく、bashスクリプトの最後でexecを使用します。だからexec server --args。それは、常にスタートアップのジョブで見られます。
キャメロンネモ14

回答:


17

この機能は最近スーパーバイザーに追加されました

environment = PATH = "/ home / site / environments / master / bin:%(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

ドキュメントを確認し、Dmitryに同意します。

現在の答えは次のとおりです。スーパーバイザーはこのディレクトリを実行しませんが、ラッパースクリプトを作成すると役立ちます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.