📖 headtail 命令详解

1. 命令简介

  • head:默认显示文件的 前 10 行 内容,可指定行数或字节数。
  • tail:默认显示文件的 后 10 行 内容,可实时跟踪文件更新,常用于查看日志。

2. 基本语法

head [选项] [文件...]
tail [选项] [文件...]
  • 文件:一个或多个目标文件,若省略则从标准输入读取。
  • 输出结果:打印到标准输出,可配合 >>>、管道使用。

3. 常用选项

head

选项 说明
-n <行数> 显示前 N 行
-c <字节数> 显示前 N 字节
-q 安静模式,多文件时不显示文件名
-v 总是显示文件名(即使只有一个文件)

tail

选项 说明
-n <行数> 显示最后 N 行
-c <字节数> 显示最后 N 字节
-f 持续跟踪文件增长(实时输出新内容)
-F 类似 -f,但文件被替换时自动重新打开(常用于日志)
-q 多文件时不显示文件名
-v 总是显示文件名

4. 权限要求

  • 用户必须对文件有 读权限 ® 才能使用 headtail
  • 若从管道读取数据,则不依赖文件权限。

5. 使用示例

5.1 head 基本用法

head file.txt

👉 显示 file.txt 的前 10 行。

head -n 20 file.txt

👉 显示前 20 行。

head -c 100 file.txt

👉 显示前 100 个字节内容。

head file1 file2

👉 显示多个文件的前 10 行。


5.2 tail 基本用法

tail file.txt

👉 显示 file.txt 的最后 10 行。

tail -n 50 file.txt

👉 显示最后 50 行。

tail -c 200 file.txt

👉 显示最后 200 字节内容。

tail -f /var/log/messages

👉 实时跟踪日志文件的更新(常用)。

tail -F /var/log/nginx/access.log

👉 即使日志文件被轮转(替换),也会继续跟踪新文件。


6. 运维实战场景

场景 A:查看配置文件开头

head -n 20 /etc/passwd

👉 查看系统用户列表的前 20 行。

场景 B:快速定位日志结尾

tail -n 100 /var/log/syslog

👉 查看最近的 100 行日志。

场景 C:实时跟踪日志

tail -f /var/log/nginx/error.log

👉 调试 Nginx 错误日志。

场景 D:多文件日志合并跟踪

tail -f /var/log/nginx/*.log

👉 同时跟踪多个日志文件。

场景 E:查看二进制文件头信息

head -c 512 /bin/bash | hexdump -C

👉 查看 ELF 文件头。


7. 注意事项

  • 默认行数headtail 默认输出 10 行。
  • 大文件性能tail -f 会保持进程挂起,长期使用需注意资源占用。
  • 日志轮转问题:使用 tail -f 时,如果日志被切割替换,可能会“失效”,推荐 tail -F
  • 字节模式风险-c 按字节截取可能会破坏多字节字符(如 UTF-8 中文)。

8. 小结

  • head:适合 查看文件开头,常用于配置文件、数据文件的结构检查。

  • tail:适合 查看文件结尾或实时更新,是日志分析必备工具。

  • 运维中最常用的是:

    • head -n(查看开头几行)
    • tail -n(查看结尾几行)
    • tail -f / tail -F(实时日志跟踪)
Logo

一座年轻的奋斗人之城,一个温馨的开发者之家。在这里,代码改变人生,开发创造未来!

更多推荐