如何让 svlogd 在 runit 作业中更频繁地写入数据

如何让 svlogd 在 runit 作业中更频繁地写入数据

我目前将此日志/运行脚本作为 runit 服务的一部分:

#!/bin/sh
set -e

exec svlogd -tt ./main

如果我“ tail -f log/main/current”,我看不到“实时”写入的服务输出。它似乎只以 4K 增量转储标准输出。因此,如果该服务使用较少,我将看不到最新的日志数据,除非我实际上对服务执行了“sv restart”,在这种情况下,所有数据都会在服务重新启动之前写入日志。

我已经尝试过“-l”和“-b”参数,但这些没有任何效果(而且我什至不确定此时它是否重要)。

答案1

不幸的是,看起来故障在于守护进程,它在写入日志数据后没有刷新它的标准输出。

svlogd 仅进行行缓冲,因此一旦完整的行到达标准输入,它就会将其输出到日志文件。

相关内容