web-dev-qa-db-ja.com

スーパーバイザを使用するときにモノプログラムオプション引数を指定する方法

Linux supervisordを使用して、monoで実行されるサービスを管理しています。これは、supervisord v3.0b2を備えたUbuntu 14.04.2 LTSにあります。

コマンドがスーパーバイザによって呼び出されたときに認識されるように、モノラルのprogram-options引数を指定する方法を理解しようとしています。

モノのヘルプでは、コマンドの形式は次のとおりです。

mono [options] program [program-options]

サービスの構成ファイル/ etc/supervisor/conf.d/myservice.confでは、これらの形式の両方を試しましたが、どちらも機能しませんでした。サービスは開始されますが、-abc引数は無視されます。

command=mono --gc=sgen MyService.exe -abc
command=mono --gc=sgen MyService.exe -- -abc

シェルで最初のコマンドを実行すると機能します(-abc引数はサービスの起動時に認識され、ログに記録されます)。

mono --gc=sgen MyService.exe -abc

サービスの構成ファイルを変更するときは常にSudo supervisorctl rereadを使用することに注意してください。ここに完全なファイルがあります:

[program:myservice]
environment=LD_LIBRARY_PATH=.
command=mono --gc=sgen MyService.exe -- -abc
user=myuser
stderr_logfile=/var/log/myservice/myservice-err.log
stdout_logfile=/var/log/myservice/myservice-stdout.log
directory=/opt/myservice

何が欠けていますか?

1
Alan

この問題のトラブルシューティングを行うために、supervisordプロセスのデバッグログを有効にすることにしました。うまくいけば、-myservice.confからどのコマンドが解析されたかを確認できます。

/ etc/supervisor/supervisord.confsupervisordセクションにloglevel=debugという行を追加しました。次に/ var/log/supervisor/supervisord.logを尾行し、Sudo service supervisor restartを使用してサービスを再起動すると、myserviceコマンド引数が認識されていることがわかりました。

ところで、次のコマンド形式を使用するように変更しました。

command=mono --gc=sgen MyService.exe -abc

そのため、何らかの理由でsupervisorctl rereadでは不十分だったため、supervisordサービスを再起動する必要がありました。

1
Alan