我目前将此日志/运行脚本作为 runit 服务的一部分:
#!/bin/sh
set -e
exec svlogd -tt ./main
如果我“ tail -f log/main/current
”,我看不到“实时”写入的服务输出。它似乎只以 4K 增量转储标准输出。因此,如果该服务使用较少,我将看不到最新的日志数据,除非我实际上对服务执行了“sv restart”,在这种情况下,所有数据都会在服务重新启动之前写入日志。
我已经尝试过“-l”和“-b”参数,但这些没有任何效果(而且我什至不确定此时它是否重要)。
答案1
不幸的是,看起来故障在于守护进程,它在写入日志数据后没有刷新它的标准输出。
svlogd 仅进行行缓冲,因此一旦完整的行到达标准输入,它就会将其输出到日志文件。