我也看到过这种行为并对此感到恼火。 我认为正确的行为是尽可能创建 logdir,至少不应该允许其他任务崩溃
我也看到过这种行为并对此感到恼火。
它什么时候发生? 原评论不具体。 当stdout_logfile
[program:x]
部分中的stdout_logfile
指定了一个不存在的日志目录时,是否会发生崩溃? 您使用的是哪个主管版本?
我认为正确的行为是尽可能创建 logdir
我不使用任何其他具有此类行为的程序。 supervisord
没有足够的信息来自动创建日志目录,因为它不知道哪个用户应该拥有该目录或权限应该是什么。 我认为它唯一可以在不增加一堆选项的情况下做的唯一一件事就是在日志目录不存在时显示明确的错误消息。
至少不应该允许其他任务崩溃
我同意添加stdout_logfile
或stderr_logfile
指定不存在的目录的[program:x]
部分不应崩溃supervisord
。
当 [program:x] 部分中的 stdout_logfile 指定一个不存在的日志目录时,是否会发生崩溃? 您使用的是哪个主管版本?
是的。 对我来说 3.1.3 上的一些问题。
已在 fd22ca89ff353fbe92845e9d2517645e6cf149ac 中修复。 此修复程序将包含在 Supervisor 3.2 中。
以下是如何复制它并验证它是否已修复。 最小supervisord.conf
:
[supervisord]
logfile = /tmp/supervisord.log
[inet_http_server]
port = 127.0.0.1:9001
[supervisorctl]
serverurl = http://127.0.0.1:9001
[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
[program:cat]
command = /bin/cat
stdout_logfile = /thelogdir/foo.txt
autostart = false
日志目录必须存在,否则supervisord
将拒绝启动。 创建日志目录并使用该配置在前台启动supervisord
:
$ mkdir /thelogdir
$ supervisord --version
3.2.0.dev0
$ supervisord -n -c /path/to/supervisord.conf
2015-08-18 14:38:52,503 INFO Increased RLIMIT_NOFILE limit to 1024
2015-08-18 14:38:52,516 INFO RPC interface 'supervisor' initialized
2015-08-18 14:38:52,516 CRIT Server 'inet_http_server' running without any HTTP authentication checking
2015-08-18 14:38:52,516 INFO supervisord started with pid 49508
在supervisord
仍在运行时删除日志目录:
$ rmdir /thelogdir
尝试启动该过程:
$ supervisorctl -c /path/to/supervisord.conf
cat STOPPED Not started
supervisor> start cat
cat: ERROR (spawn error)
supervisor> status
cat FATAL unknown error making dispatchers for 'cat': ENOENT
最有用的评论
已在 fd22ca89ff353fbe92845e9d2517645e6cf149ac 中修复。 此修复程序将包含在 Supervisor 3.2 中。
以下是如何复制它并验证它是否已修复。 最小
supervisord.conf
:日志目录必须存在,否则
supervisord
将拒绝启动。 创建日志目录并使用该配置在前台启动supervisord
:在
supervisord
仍在运行时删除日志目录:尝试启动该过程: