Мы используем Linux supervisord для управления службой, работающей под моно. Это находится на Ubuntu 14.04.2 LTS с supervisord v3.0b2.
Я пытаюсь выяснить, как указать аргумент mono program-options, чтобы он распознавался при вызове команды Супервизор.
Монополе говорит, что формат команды:
mono [options] program [program-options]
В файле конфигурации для служебных программных опций у меня есть попробовал оба этих формата и не работал. Служба запускается, однако игнорирует аргумент -abc:
command=mono --gc=sgen MyService.exe -abc
command=mono --gc=sgen MyService.exe -- -abc
Если я запускаю первую команду в оболочке, она работает (аргумент -abc распознается и регистрируется во время запуска службы): [ ! d6] mono --gc=sgen MyService.exe -abc
Обратите внимание, что я использую sudo supervisorctl reeread, когда я изменяю конфигурационный файл службы. Вот полный файл:
[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
Что мне не хватает?
Чтобы устранить эту проблему, я решил включить ведение журнала отладки для процесса supervisord, чтобы я мог надеяться увидеть, какую команду он проанализировал из myservice.conf.
Я добавил строку loglevel=debug в supervisord раздела myservice.conf . Затем я обработал /var/log/supervisor/supervisord.log и перезапустил службу с помощью sudo service supervisor restart и увидел, что теперь был признан аргумент команды myservice!
BTW, я изменил его, чтобы использовать команду format:
command=mono --gc=sgen MyService.exe -abc
Итак, по какой-то причине supervisorctl reread было недостаточно, мне пришлось перезапустить службу supervisord.
Чтобы устранить эту проблему, я решил включить ведение журнала отладки для процесса supervisord, чтобы я мог надеяться увидеть, какую команду он проанализировал из myservice.conf.
Я добавил строку loglevel=debug в supervisord раздела myservice.conf . Затем я обработал /var/log/supervisor/supervisord.log и перезапустил службу с помощью sudo service supervisor restart и увидел, что теперь был признан аргумент команды myservice!
BTW, я изменил его, чтобы использовать команду format:
command=mono --gc=sgen MyService.exe -abc
Итак, по какой-то причине supervisorctl reread было недостаточно, мне пришлось перезапустить службу supervisord.