当前位置:首页>Linux>Linux命令每日一清单032:tail--文件尾部查看命令速查表

Linux命令每日一清单032:tail--文件尾部查看命令速查表

  • 2026-09-10 15:07:59
Linux命令每日一清单032:tail--文件尾部查看命令速查表

tail是Linux/Unix系统中用于显示文件末尾内容的命令,默认显示文件的最后10行。与head命令(显示文件开头)相对应,tail最强大的功能是支持实时跟踪文件变化(-f选项),使其成为日志监控和调试的必备工具。

tail广泛应用于查看日志文件、监控实时输出、提取文件尾部数据等场景。它能够处理多个文件,支持按行数或字节数截取,并且可以与其他文本处理工具无缝集成。掌握tail是进行系统监控和日志分析的基础技能。

1. 基本语法

命令说明
tail file.txt
显示文件最后10行
tail -n 20 file.txt
显示最后20行
tail -f file.txt
实时跟踪文件新增内容
tail -c 200 file.txt
显示最后200字节
command | tail
显示管道输出的末尾

2. 显示最后N行

命令说明
tail /var/log/syslog
显示系统日志最后10行
tail -n 50 /var/log/nginx/access.log
显示最后50行访问日志
tail -5 file.txt
显示最后5行(短格式)
tail -n 1 file.txt
仅显示最后一行
tail -n +5 file.txt
从第5行开始显示到文件末尾
tail -n 0 file.txt
显示空(0行)
tail -n 100 file.txt | head -20
显示最后100行的前20行

-n +N 说明:tail -n +5 从第5行开始显示(包括第5行),相当于跳过前4行。

3. 实时跟踪日志

命令说明
tail -f /var/log/auth.log
实时跟踪认证日志
tail -n 100 -f app.log
先显示最后100行,然后持续跟踪
tail -F /var/log/nginx/error.log
跟踪并支持日志轮转(推荐)
sudo tail -f /var/log/secure
跟踪需要root权限的日志
tail -f --pid=1234 app.log
当PID 1234退出时停止跟踪
tail -f -s 2 app.log
每2秒检查一次文件变化
tail -f -q *.log
跟踪多个日志文件,不显示标题

-f vs -F 区别:

  • -f:跟踪文件描述符(文件被重命名或轮转后停止)
  • -F:跟踪文件名(文件轮转后自动重新打开,推荐用于日志监控)

4. 字节控制与起始位置

命令说明
tail -c 500 file.bin
显示最后500字节
tail -c 2K file.log
显示最后2 KiB
tail -c 1M file.bin
显示最后1 MiB
tail -n +2 file.csv
跳过第一行(常用于CSV表头)
tail -n +20 file.txt
从第20行显示到末尾
tail -c +101 file.txt
从第101字节开始显示
tail -n 10 -c 100 file.txt
最后10行且不超过100字节

大小单位:

  • K:KiB(1024字节)
  • M:MiB(1024^2字节)
  • G:GiB(1024^3字节)

5. 多文件处理

命令说明
tail file1.log file2.log
显示每个文件的最后10行
tail -n 20 file1.log file2.log
显示每个文件的最后20行
tail -f /var/log/syslog /var/log/auth.log
同时跟踪多个日志文件
tail -q file1.txt file2.txt
不显示文件名标题
tail -v file1.txt file2.txt
总是显示文件名标题
tail -n 5 *.log
显示所有log文件的最后5行

多文件输出示例:

==> file1.log <==
... 内容 ...

==> file2.log <==
... 内容 ...

6. 管道与组合用法

命令说明
dmesg | tail -n 20
显示最新的20条内核消息
ps aux | sort -nk 3 | tail -5
显示CPU使用率最高的5个进程
grep "ERROR" app.log | tail -n 20
显示最新的20条错误日志
tail -n +20 file.txt | head -n 11
提取第20到30行
journalctl -u nginx | tail -n 50
显示nginx服务最新的50条日志
history | tail -10
显示最近10条命令历史
tail -f app.log | grep "ERROR"
实时过滤错误日志
tail -f app.log | awk '{print $1, $NF}'
实时提取特定字段

7. 实用组合模式

命令说明
tail -F /var/log/nginx/access.log | cut -d' ' -f1 | uniq -c
实时统计访问IP频率
tail -n 0 -f app.log > output.txt
清空输出文件并从当前开始跟踪
tail -f /var/log/syslog | tee syslog-filtered.log
跟踪并同时保存到文件
ssh user@host "tail -f /var/log/remote.log"
跟踪远程主机日志
tail -n +2 file.csv | head -n -1
去掉首行和末行
tail -c 100000 file.log | strings
提取文件末尾的可读文本
while true; do tail -n 1 file.log | grep "ERROR" && break; sleep 1; done
等待错误出现后退出

8. 常用选项速查

选项完整名称说明
-n
--lines
显示的行数(-n +N从第N行开始)
-c
--bytes
显示的字节数(-c +N从第N字节开始)
-f
--follow
实时跟踪文件新增内容
-F
--follow=name
跟踪文件名(支持日志轮转)
-s
--sleep-interval
跟踪时的检查间隔(秒)
-q
--quiet, --silent
多文件时不显示文件名标题
-v
--verbose
总是显示文件名标题
-z
--zero-terminated
以空字符而非换行分隔行
--pid
-
指定PID退出时停止跟踪
--retry
-
文件不可访问时持续重试

9. tail vs head 对比

命令默认行为典型用途
tail
显示最后10行
查看最新日志、监控实时输出
head
显示前10行
查看文件开头、预览内容
tail -f
实时跟踪
日志监控、调试
head -n -5
显示除最后5行外所有行
排除文件末尾

示例:

tail -n 20 file.txt  # 最后20行
head -n 20 file.txt  # 前20行
head -n -5 file.txt  # 除最后5行外所有行

10. 故障排查

问题解决方法
-f 后没有新输出
确认文件正在被写入:lsof查看;检查是否在正确的路径
日志轮转后停止输出
使用-F替代-f,它会跟踪文件名而非文件描述符
Permission denied
检查文件权限:ls -l;使用sudo或切换用户
需要提取最后一列的值
结合awk:tail -1 file.txt | awk '{print $NF}'
-n +N 起始行错误-n +5
 从第5行开始显示(包括第5行),不是跳过5行
跟踪多个文件时输出混乱
使用-q隐藏文件名,或使用multitail命令
tail占用过高CPU
减少-s间隔值(如-s 2);检查文件是否频繁写入
二进制文件显示乱码
使用strings提取可读文本:tail -c 1000 file.bin | strings

温馨提示: tail是日志分析的得力助手,建议掌握以下技巧:1)监控生产日志时始终使用-F而非-f,以应对日志轮转;2)使用tail -f结合grep可以实时过滤关键信息;3)tail -n +2是跳过CSV文件表头的常用写法;4)在脚本中获取日志最新行时,tail -n 1是最简单的方法;5)跟踪远程日志时,可通过SSH管道实现:ssh host "tail -f /var/log/remote.log"。对于需要同时查看多个日志的场景,multitail命令提供了更友好的界面。

本文PDF格式下载:

  关注公众号(haopython),请回复: LLTTAIL

最新文章

随机文章