tailf、tail -f、tail -F三者区别

xiaohai 2021-05-17 20:45:45 1901人围观 标签: Linux 
简介tailf、tail -f、tail -F三者区别

比较表:

命令 说明
tail -f 等同于—follow=descriptor,根据文件描述符进行追踪,当文件改名或被删除,追踪停止
tail -F 等同于—follow=name —retry,根据文件名进行追踪,并保持重试,即该文件被删除或改名后,如果再次创建相同的文件名,会继续追踪
tailf 等同于tail -f -n 10(貌似tail -f或-F默认也是打印最后10行,然后追踪文件),与tail -f不同的是,如果文件不增长,它不会去访问磁盘文件,所以tailf特别适合那些便携机上跟踪日志文件,因为它减少了磁盘访问,可以省电

tail -f

经常我们会使用tail -f 命令来查看文件的变化输出过程,默认输出文件最后十行内容,如:

[root@izwz9gipf37wcbyspk8o6bz ~]# tail -f log.txt 
Sat Jul 11 20:58:34 CST 2020
Sat Jul 11 20:58:35 CST 2020
Sat Jul 11 20:58:36 CST 2020

只要文件有变动就会输出出来,但是如果我们这时候把文件删除后,那么这个命令没有任何反应,如果我们再重新往这个文件写入数据后,发现也没有任何变化。

tail -F

如果使用-F,那么如果文件被删除后,不会退出,如果重新写入新的内容到相同的文件名,那么继续进行追踪打印。

[root@izwz9gipf37wcbyspk8o6bz ~]# tail -F log.txt 
Sat Jul 11 21:05:56 CST 2020
Sat Jul 11 21:05:57 CST 2020
Sat Jul 11 21:06:01 CST 2020
Sat Jul 11 21:06:02 CST 2020
Sat Jul 11 21:06:02 CST 2020
Sat Jul 11 21:06:03 CST 2020
Sat Jul 11 21:06:03 CST 2020
Sat Jul 11 21:06:03 CST 2020
Sat Jul 11 21:06:04 CST 2020
Sat Jul 11 21:06:04 CST 2020
Sat Jul 11 21:12:20 CST 2020
tail: ‘log.txt’ has become inaccessible: No such file or directory #这里删除该文件,会提示没有改文件但是不会退出
tail: ‘log.txt’ has appeared;  following end of new file #当重新有内容写入到该文件,那么又开始打印
Sat Jul 11 21:12:29 CST 2020

tailf

tailf如果我们监听的文件被删除后,那么命令会直接结束掉,不会继续监听。

[root@izwz9gipf37wcbyspk8o6bz ~]# tailf log.txt 
Sat Jul 11 21:12:29 CST 2020
Sat Jul 11 21:14:56 CST 2020
#这里我删除了文件,然后命令就结束了