我计划使用supervisor运行多个流程,请找到我的supervisor.配置文件如下:

[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

命令,我可以看到子进程日志(log).我该怎么做?我try 将syslog设置为stdout_logfile属性,但没有成功.

推荐答案

您可以使用以下配置选项将程序的标准输出重定向到supervisor的标准输出:

stdout_logfile=/dev/fd/1
stdout_logfile_maxbytes=0

说明:

  • 当一个进程打开/dev/fd/1(与/proc/self/fd/1相同)时,系统实际上会克隆该进程的文件描述符#1(stdout).因此,将其用作stdout_logfile会导致supervisord将程序的stdout重定向到自己的stdout.
  • stdout_logfile_maxbytes=0禁用日志(log)文件旋转,这对stdout显然没有意义.不指定此选项将导致错误,因为默认值为50MB,并且supervisor不够聪明,无法检测到指定的日志(log)文件不是常规文件.

有关更多信息:

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

Linux相关问答推荐

如何删除字符串中的`{{i:`and `}}`

空字符串和空文件的区别

没有发现运行时依赖关系,但它在S的运行时路径中有吗?

在 Bash 中使用 shell 脚本从文件中解析版本号

为什么 linux shell diff 命令有时会显示与空行相关的输出,即使存在 -B(--ignore-blank-lines)选项?

用户级线程如何与内核级线程对话

我应该如何从非 root Debian Linux 守护进程登录?

为什么在 find 命令中使用 dirname 会 for each 匹配项提供点?

argv的编码是什么?

Java 8 上的 SQL Server JDBC 错误:驱动程序无法使用安全套接字层 (SSL) 加密建立与 SQL Server 的安全连接

我如何从 Ubuntu 上的源代码自己构建 python?

打印当前一周的星期一的日期(在 bash 中)

如何让 PHP、Symlinks 和 __FILE__ 很好地协同工作?

使用单个命令打开 .tar.gz 文件

使用 C++ 和 Linux 的高分辨率计时器?

cmake : 从脚本设置环境变量

如何将文件夹中的文件列表发送到Linux中的txt文件

如何从 Linux 终端找到特定文件?

Linux:用户名不在 sudoers 文件中

使用 WGET 运行 cronjob PHP