Linux命令大全-tail命令

一、简介

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

### Tail 命令概述 `tail` 是 Unix 和类 Unix 系统中的一个实用工具,主要用于查看文件的末尾部分。此命令对于监控日志文件特别有用,因为它能够实时更新并展示最新添加的数据[^1]。 ### 基础语法 基本形式如下: ```bash tail [OPTION]... [FILE]... ``` 其中 `[OPTION]` 表示可选参数,而 `[FILE]` 则是要读取的目标文件路径。如果不提供任何选项,默认情况下 `tail` 将打印出给定文件的最后一屏内容(通常是最后十行)。如果未指定文件名,则默认处理标准输入流。 ### 实用功能与案例分析 #### 显示多于/少于特定数量的行数 通过 `-n` 参数来控制输出多少行文本。例如要获取文件 `example.log` 中最近的 20 条记录可以执行: ```bash tail -n 20 example.log ``` 同样地,也可以使用正号前缀表示从文件开头算起第 N 行之后的所有内容;负号则意味着除去前面若干行后的剩余部分。 #### 动态监视变化 当需要持续跟踪某个不断增长的日志文件时,`-f` 开关非常有帮助。它会让终端保持打开状态直到手动终止,并随着源文件的增长即时反映新增加的信息条目。这对于调试应用程序错误或者观察服务器活动十分有效[^3]: ```bash tail -f /var/log/syslog ``` #### 结合其他命令 为了增强灵活性,`tail` 可以与其他 GNU/Linux 工具链一起工作。比如先利用 `grep` 过滤感兴趣的消息类别再传递给 `sort` 排序最终由 `head/tail` 提取出所需片段形成复杂查询逻辑[^2]。 ```bash cat states.txt | grep 'California' | tail -n 5 | sort -r ``` 上述指令组合实现了这样一个目的:从名为 `states.txt` 的文档内检索含有关键词 “California”的全部匹配项,从中截取倒数五个实例并且按照字母降序排列呈现出来。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值