一、简介
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 的输出和如何根据需要调整命令的使用。
1587

被折叠的 条评论
为什么被折叠?



