如何仅监视日志文件的最后n行?


110

我有,我想显示一个不断增长的日志文件,只有最后的15行。这是我知道可以做的:

tail -n 15 -F mylogfile.txt

填充日志文件后,tail将最后几行添加到显示中。

我正在寻找一种仅显示最后15行并在更新后摆脱最后15行之前的行的解决方案。你有个主意吗?


28
将终端窗口的大小调整为15行。
乔纳森(Jonathan)

1
那也是一个好人。
Marc-Olivier Titeux'1

3
@乔纳森天才!
Marsellus Wallace 2015年

无法投票支持jonathan的评论,否则将失去15次投票的味道
jdero

Answers:


151

使用手表可能就足够了:

$ watch tail -n 15 mylogfile.txt

1
大!非常感谢。在此过程中,我还将学习“监视”命令。
Marc-Olivier Titeux'1

1
请注意,如果文件在两次watch更新之间的增长量超过15行,则此解决方案将不起作用。您可以使用-n更改此间隔。
bfontaine

25

如果您使用手表,请尝试使用该-n选项来控制每次更新之间的间隔。

因此,下面的代码每2秒调用一次tail

$ watch -n 2 tail -n 15 mylogfile.txt

而每1秒轮询一次

$ watch -n 1 tail -n 15 mylogfile.txt


8

也许您找到了-d方便的参数。

man watch

-d突出显示连续更新之间的差异。Option将读取可选参数,该参数将突出显示更改为永久参数,从而允许您查看自第一次迭代以来至少发生了什么更改。


1
太好了!
Marc-Olivier Titeux

0

在Solaris,AIX或HPUX或类UNIX(包括Linux)中,可以使用脚本来监视日志或类似的内容:

while true; 
    clear; 
    do date; 
    echo ;
    echo "MONITORING LOG IN "/path/to/file.log": "; 
    echo "Obs.: Last 20 lines of a logfile:
    echo ;
    tail -20 /path/to/file.log;
    echo ;
sleep 5; 
done
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.