Мы используем 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
Что я пропускаю?
Для поиска и устранения неисправностей этой проблемы я решил включить отладку, регистрирующуюся для эти supervisord
процесс, таким образом, я мог, надо надеяться, видеть то, что управляет, чтобы это проанализировало от myservice.conf.
я добавил строку loglevel=debug
к supervisord
раздел /etc/supervisor/supervisord.conf. Я затем выследил /var/log/supervisor/supervisord.log и перезапустил сервис с sudo service supervisor restart
и видел, что myservice аргумент команды теперь распознавался!
BTW, я возвратился для использования формата команды:
command=mono --gc=sgen MyService.exe -abc
Так, по некоторым причинам supervisorctl reread
не был достаточно, я должен был перезапустить supervisord
сервис.