我们正在使用 Linuxsupervisord
来管理在 mono 下运行的服务。这是在带有supervisord
v3.0b2 的 Ubuntu 14.04.2 LTS 上。
我正在尝试弄清楚如何指定单声道程序选项参数,以便在 Supervisor 调用该命令时可以识别它。
Mono 帮助说命令格式是:
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
如果我在 shell 中运行第一个命令,它就会起作用(该-abc
参数在服务启动期间被识别并记录):
mono --gc=sgen MyService.exe -abc
请注意我使用sudosupervisorctl 重新读取每当我修改服务的配置文件时。以下是完整文件:
[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
进程启用调试日志记录,这样我就能看到它解析了什么命令我的服务配置文件。
我把这行添加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
服务。