导航菜单

Linux命令大全-tail命令

陆兴东 2026-04-07 18 浏览 Linux命令

一、简介

tail命令用于输出文件的末尾部分内容,默认是查看文档的最后10行内容。通常会用参数“ -f ”用于查看正在改变的日志文件内容。

二、语法

语法:tail [选项]... [文件]...

参数说明:

-f:循环读取

-q:不显示处理信息

-v:显示详细的处理信息

-c:<数目> 显示的字节数

-n:<行数> 显示文件的尾部 n 行内容

--pid:--pid=PID 与-f合用,表示在进程ID,PID死掉之后结束

-q:--quiet, --silent 从不输出给出文件名的首部

-s:--sleep-interval=S 与-f合用,表示在每次反复的间隔休眠S秒

--version:显示版本信息

--help:显示帮助信息

三、实战

1、默认查看文档最后10行

[root@app01 log]# tail Xorg.9.log 
[    45.861] (II) UnloadModule: "evdev"
[    45.861] (II) evdev: VirtualPS/2 VMware VMMouse: Close
[    45.861] (II) UnloadModule: "evdev"
[    45.861] (II) evdev: AT Translated Set 2 keyboard: Close
[    45.861] (II) UnloadModule: "evdev"
[    45.861] (II) evdev: VMware VMware Virtual USB Mouse: Close
[    45.861] (II) UnloadModule: "evdev"
[    45.861] (II) evdev: Power Button: Close
[    45.861] (II) UnloadModule: "evdev"
[    45.875] (II) Server terminated successfully (0). Closing log file.

2、查看文档尾部最后几行内容(如:尾部5行)

[root@app01 log]# tail -n 5 Xorg.9.log 
[    45.861] (II) evdev: VMware VMware Virtual USB Mouse: Close
[    45.861] (II) UnloadModule: "evdev"
[    45.861] (II) evdev: Power Button: Close
[    45.861] (II) UnloadModule: "evdev"
[    45.875] (II) Server terminated successfully (0). Closing log file.

3、动态跟踪某个文件的内容变化

[root@app01 log]# tail -f Xorg.9.log 

此命令显示Xorg.9.log文件的最后 10 行。当将某些行添加至Xorg.9.log 文件时,tail 命令会继续显示这些行。 显示一直继续,直到您按下(Ctrl+c)组合键停止显示为止。

4、查看文件从第几行至文件末尾

[root@app01 log]# tail -n +3 Xorg.9.log 

参数“-n +行数”是指从文件中的第几行开始查看到文件的尾部内容。如果想查看第几行开始返回指定行数查看,此时需要和“head”命令进行组合查看了。如下所示:

[root@app01 log]# tail -n +10  Xorg.9.log|head -n 2
[     9.164]   Before reporting problems, check http://wiki.x.org 
to make sure that you have the latest version

从Xorg.9.log中的第10行开始,返回2行内容。

5、查看文件尾部的几个字节

[root@app01 log]# tail -c 20 Xorg.9.log. Closing log file.

大家有可能比较疑惑,不是返回20个字节吗,为什么返回了19个?这通常是因为以下几个原因(仅供参考,理解不到位的还请谅解):

1.字节计数问题:

tail -c 20 实际上是按照字节来计算,而不是按照行或字符。如果你的文件是以某种特定的方式编码(例如 UTF-8),某些字符可能会占用超过一个字节的存储空间。特别是,如果一个字符跨越了最后一个字节和下一个字节(例如,一个多字节字符的开始部分在文件的最后部分),tail -c 20 可能只显示到该字符的第一个字节。

2.文件末尾的特殊字符:

文件末尾可能包含换行符(例如,\n),这在 UNIX 和 Linux 系统中通常是一个字节。如果你的文件正好以一个多字节字符结尾,加上换行符,总共可能正好是 20 个字节,导致看起来像是只显示了 19 个字节的有效内容。

3.查看字节的实际内容:

使用 tail -c 20 显示的可能是二进制数据,这可能包括了文件末尾的控制字符或其他不可打印的字符。可以通过管道将输出传递给 hexdump 或 xxd 来以十六进制形式查看这些字节,这有助于理解实际显示的内容。例如:

tail -c 20 filename | xxd

4.文件大小不足:

如果文件的大小本身小于 20 个字节,那么 tail -c 20 将显示整个文件的内容。

解决方法:

1.确认文件编码:了解文件的编码方式(如 UTF-8, ASCII 等),特别是当处理文本文件时,确保你了解每个字符可能占用的字节数。

2.使用 xxd 或 hexdump:如上所述,使用这些工具可以帮助你以十六进制格式查看输出,这通常更易于理解非文本数据的表示。

3.调整计数:如果你只是想看到文件的最后几行,使用 tail -n 20(而不是 -c)会更合适,这样可以确保按行显示内容。

通过这些方法,你可以更好地理解 tail -c 20 的输出和如何根据需要调整命令的使用。