Linux:如何检查最后一次添加到文件的行数?

在例如最近10秒内,我怎样才能使用Linux / Bash检查选中的日志文件中添加了多less行?

这是一次使用,而不是在后台运行。 文件不包含任何关于时间的信息。
我也不需要这个任意的 – >我可以从我想跟踪添加的行数中select一个时刻,并且执行一段时间。

谢谢!

这是一次使用,而不是在后台运行。 文件不包含任何关于时间的信息。

然后它就变得更加困难,没有实用的function,因为如果这样做的话,这意味着它在10秒钟之前就知道了文件内容。 但是,对于“10秒”,没有什么不可思议的,这意味着写入数据会被长时间保存/caching(除非有一些关于写入日志文件的次要日志logging,以及何时)。

你最好的select是:

  • 运行Laykes提供的命令或类似于tail -s 10 -f FILE以便输出10秒内的文件内容。
  • 标记日志文件本身: echo '-- MARKER --' >> FILE并检查你想要的。

但无论如何,您需要推出自己的解决scheme。

您可以设置一个作业,logging文件中的时间和行数。 另一种方法是在日志文件中插入时间戳,并检查时间戳之间的行数。

你不能这样做,除非你知道你需要提前做(这将允许你在适当的时间复制文件或快照文件系统)。 即使是版本化的文件系统(很less见)也不会logging每个字符或行在更改时发生更改。 你可能希望达到的最好的结果是说“最后的变化是这个数据,它发生在时间X和时间Y之间”。

基于Zoredache的回答:它看起来像超时也杀死pipe道,但你仍然可以转发输出到一些临时文件,然后计算其中的行。

 timeout 2 tail -f logfile >/tmp/outp ; cat /tmp/outp | wc -l 

或用手表

 watch -n3 "bash -c 'timeout 2 tail -f logfile >/tmp/outp ; cat /tmp/outp | wc -l'" rm /tmp/outp