我打算使用supervisor运行多个进程,请在下面找到我的supervisord.conf文件:
[supervisord] [program:bash] command=xyz stdout_logfile =/tmp/bash.log redirect_stderr=true [supervisorctl] serverurl=unix:///tmp/supervisor.sock [unix_http_server] file=/tmp/supervisor.sock ; path to your socket file [rpcinterface:supervisor] supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
我希望将名为bash的进程的stdout重定向到supervisor控制台,以便在我启动supervisor时使用
/usr/bin/supervisord
命令,我可以看到子进程日志.我怎样才能做到这一点 ?我尝试将syslog用于stdout_logfile属性但它不起作用.
您可以使用以下配置选项将程序的标准输出重定向到主管的标准输出:
stdout_logfile=/dev/fd/1 stdout_logfile_maxbytes=0
说明:
当进程打开/dev/fd/1
(与其相同/proc/self/fd/1
)时,系统实际克隆该进程的文件描述符#1(stdout).stdout_logfile
因此使用它会导致supervisord
程序的标准输出重定向到它自己的标准输出.
stdout_logfile_maxbytes=0
禁用日志文件轮换,这显然对stdout没有意义.不指定此选项将导致错误,因为默认值为50MB且supervisor不够智能,无法检测到指定的日志文件不是常规文件.
欲获得更多信息:
http://veithen.github.io/2015/01/08/supervisord-redirecting-stdout.html