Как указать моно аргументы параметров программы при использовании супервизора?

Мы используем Linux supervisord управлять сервисом, который работает под моно. Это на Ubuntu 14.04.2 LTS с supervisord v3.0b2.

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

Моно справка говорит, что формат команды:

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 для перечитывания всякий раз, когда я изменяю конфигурационный файл сервиса. Вот полный файл:

[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 ответ

Чтобы устранить эту проблему, я решил включить ведение журнала отладки для supervisord процесс, чтобы я мог надеяться увидеть, какую команду он проанализировал из myservice.conf.

Я добавил строку loglevel=debug к supervisord раздел /etc/supervisor/supervisord.conf. Затем я замкнул /var/log/supervisor/supervisord.log и перезапустил службу с sudo service supervisor restart и увидел, что аргумент команды myservice теперь распознается!

Кстати, я вернулся, чтобы использовать формат команды:

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

Итак, по какой-то причине supervisorctl reread было недостаточно, мне пришлось перезапустить supervisord оказание услуг.

Другие вопросы по тегам