Как указать моно аргументы параметров программы при использовании супервизора?
Мы используем 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
оказание услуг.