tail命令的特殊用法

tail [ -f ] [ -c Number | -n Number | -m Number | -b Number | -k Number ] [ File ] 

参数解释: 
-f 该参数用于监视File文件增长。 
-c Number 从 Number 字节位置读取指定文件 
-n Number 从 Number 行位置读取指定文件。 
-m Number 从 Number 多字节字符位置读取指定文件,比方你的文件假设包括中文字,假设指定-c参数,可能导致截断,但使用-m则会避免该问题。 
-b Number 从 Number 表示的512字节块位置读取指定文件。 
-k Number 从 Number 表示的1KB块位置读取指定文件。 
File 指定操作的目标文件名称 
上述命令中,都涉及到number,假设不指定,默认显示10行。Number前面可使用正负号,表示该偏移从顶部还是从尾部開始计算。 
tail可运行文件一般在/usr/bin/以下。

这里我们要说的是 tail -f 和 tail -F 的区别:

在使用 tail -f 和 tail -F 同时打开一个日志文件,然后写入日志文件,最后更新日志文件,观察实时日志的变化

tail -f 

[root@aliyun var]# tail -f test.log 
hello
world

等同于--follow=descriptor,根据文件描述符进行追踪,当文件改名或被删除,追踪停止

tail -F    

[root@aliyun var]# tail -F test.log 
hello
world
tail: ‘test.log’ has become inaccessible: No such file or directory
tail: ‘test.log’ has appeared;  following end of new file
日志文件更新后

等同于--follow=name  --retry,根据文件名进行追踪,并保持重试,即该文件被删除或改名后,如果再次创建相同的文件名,会继续追踪

在 flume exec source 中切记使用 -F

但是也有一种情况例外

当需求是实时查看文件的变化并且要显示文件的中的后n行只能使用 tail -nf

[root@aliyun var]# tail -5f test.log
日志文件更新后

因为没有tail -nF这种写法

[root@aliyun var]# tail -5F test.log
tail: option used in invalid context -- 5
学习中,博客都是自己学习用的笔记,持续更新改正。。。
原文地址:https://www.cnblogs.com/Tunan-Ki/p/11749768.html