スーパーバイザープログラムの設定でデフォルトパスに追加する方法がわからないようです。
パスをリセットできます:
environment=PATH="/home/site/environments/master/bin"
しかし、私がしようとすると:
environment=PATH="/home/site/environments/master/bin:$PATH"
Supervisordが評価しないことがわかり$PATH
ます。
Googleはなんらかの理由でこれについて大きな助けにはなりませんでした。私がこれを必要とする最初の人だとは信じられません。
スーパーバイザーはこれをサポートする必要がありますが、それが何であるか考えていますか?
1
いや@ascobol、私は今のところ、私は必要なパスをハードコーディングしました
—
Prody
supervisord
構成ファイル内の変数を前処理するためにシェルを実行しないでください。そのため、シェル式を使用して変数を展開することはできません。できるパッチがあり%($PATH)
、2011年にメーリングリストで議論されましたが、知る限りではメインラインのソースツリーにはまだ含まれていません。回避策として、環境をセットアップし、引数で指定されたコマンドを実行するスクリプトを作成できます。次に、あなただけのスクリプトを実行するsupervisord
ようにcommand /usr/local/bin/setup_env_master.sh program_name arguments
シェルラッパーソリューションには重大な欠点があります。スーパーバイザーがINTまたはKILLを使用してプロセスを停止しようとすると、実際のラップされたプログラムではなく、bashスクリプトによって信号が受信されます。これは、宙ぶらりんのプロセスにつながる可能性があります(私の場合はリードしています)。
—
stoiczek
@stoiczek簡単に解決できる問題。コマンドを定期的に実行するだけでなく、bashスクリプトの最後でexecを使用します。だから
—
キャメロンネモ14
exec server --args
。それは、常にスタートアップのジョブで見られます。