tail -f,在日志空闲3秒后插入换行符?

时间:2018-02-22 11:52:49

标签: linux bash

编辑:

我后来在正确的 place : stackexchange site only for Linux/Unix

上发布了这个问题

:EndEdit中

在执行tail -f error.log时,如何在没有任何内容被追加到文件3秒后以编程方式插入换行符?

(显然,一旦添加了一个换行符,就不应该添加其他换行符,直到其他行文本被添加到日志文件中)

例如,这些行被添加到error.log:

foo
bar
boo [[wait 4 seconds]]
2far
2foo
2bar
2boo [[wait 40 seconds]]
2far

[[等待X秒]]是下一行要延迟的延迟(这不是输入文本的一部分)

这将是控制台中的输出:

foo
bar
boo

2far
2foo
2bar
2boo

2far

1 个答案:

答案 0 :(得分:1)

while read -r line;do n=$(date +%s); [ $nn -lt $(( n - 3 )) ] && echo ; nn=$n;  echo $line;  done < <(tail -f /path/to/somelogfile)

这里,&#39; tail -f&#39;的输出。使用Process Substitution将命令传递给while循环。 while循环逐行读取尾部的输出并打印它,同时保持上次读取行的时间的时间戳。如果上次保存的时间戳超过3秒,它将打印一个空行。请注意,空行将在打印下一行之前的时间打印,而不是在上次更新后经过3秒后立即打印。