gpt4 book ai didi

linux - Supervisord - 将进程标准输出重定向到控制台

转载 作者:IT王子 更新时间:2023-10-29 00:13:51 30 4
gpt4 key购买 nike

我计划使用 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 的进程的标准输出重定向到主管控制台,以便在我启动主管时使用

/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,主管不够智能,无法检测到指定的日志文件不是常规文件。

更多信息:

http://veithen.github.io/2015/01/08/supervisord-redirecting-stdout.html

关于linux - Supervisord - 将进程标准输出重定向到控制台,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25195880/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com