命令简介

tail 命令用于查看文件的尾部内容,是 Linux 系统中一个非常有用的工具。它不仅可以查看文本文件,还可以持续监视正在改变的日志文件。这使得它在分析系统日志、程序输出等场景下,成为了一个不可或缺的命令。

命令格式

1
tail [选项] [文件]

参数说明

参数 描述 备注
-n num 输出文件的最后 num 行 tail -n 20 file.txt
-c num 输出文件最后 num 个字节 tail -c 100 file.txt
-f 持续监视文件更新 tail -f /var/log/syslog
-F 类似 -f ,但遇到文件截断也重新开始监视
-q 不显示处理信息
-v 显示详细的处理信息 一般用于 debug
-b num 从 num 个块后开始显示
-r 反序显示文件内容 先显示最后几行
–pid=PID -f 合用,监视指定进程转储的数据
–max-unchanged-stats=N 过滤不需要的重复行,每次输出 N 行重复数据 tail -f /path/to/file --max-unchanged-stats=5

命令实例

基本用法

1.查看文件尾部内容

1
2
3
4
5
6
7
8
# 查看文件最后 10 行
tail file.txt

# 查看文件最后 20 行
tail -n 20 file.txt

# 查看文件最后 100 个字节
tail -c 100 file.txt

2.实时监视文件更新

1
2
3
4
5
# 监视 syslog 日志文件
tail -f /var/log/syslog

# 监视指定进程的输出
tail -f --pid=1234

3.反序显示文件内容

1
tail -r file.txt

高级用法

1.过滤重复行

使用 --max-unchanged-stats 选项,可以过滤掉不需要的重复行,只显示指定数量的重复数据。

1
tail -f /path/to/file --max-unchanged-stats=5

上面的命令会实时监视文件更新,如果连续出现超过 5 行相同的内容,则只显示 5 行。这在查看一些运行日志时非常有用。

2.动态查看文件

有时候我们需要查看正在改变的文件内容,而不是使用 tail -f。可以使用下面的方式:

1
2
3
4
5
6
7
8
9
10
#!/bin/bash

filepath=$1

while true
do
clear
tail -n 20 $filepath
sleep 1
done

这个脚本可以动态显示指定文件的最后 20 行内容,每秒钟刷新一次。非常适合查看实时产生的日志或输出。

3.结合 awk、grep 等命令使用

tail 命令可以很好地与其他命令组合使用,以实现更强大的功能。

1
2
3
4
5
# 统计 syslog 中 ERROR 出现的次数
tail /var/log/syslog | grep -i error | wc -l

# 查看 Nginx 访问日志中最近 10 次出现的 404 错误
tail /var/log/nginx/access.log | awk '/$404/' | tail -n 10

通过以上实例和扩展用法介绍,相信你已经对 tail 命令有了全面的了解。它虽然比较简单,但在日常运维工作中却扮演着非常重要的角色,是一个必须熟练掌握的命令。如有任何疑问,欢迎随时询问。