前言

在Linux日常操作和工作中,我们很少需要查看文件的全部内容,更多时候是关注文件的开头(如配置文件的头部注释、数据文件的列名)、结尾(如日志文件的最新记录),或是实时监控日志的新增内容(如排查服务故障、跟踪程序运行状态)。head、tail命令就是为此而生,二者用法简洁、功能精准,其中tail -f更是运维、开发人员排查问题的“神器”。本文全程实操,讲透两个命令的核心用法、高频参数、工作场景和避坑技巧,新手看完就能直接用于日常操作和工作。


一、head 命令:查看文件头部内容(快速预览开头)

1. 命令作用

head 命令的核心功能是查看文件的头部内容,默认显示文件的前10行,也可手动指定显示的行数。它的优势的是无需加载整个文件,处理大文件时效率极高,适合快速预览配置文件的头部说明、日志文件的启动信息,或是CSV文件的列名等场景,避免因打开大文件占用过多系统资源。

2. 基本语法

格式:head [选项] 文件名/文件路径

核心选项:-n 行数(指定显示的头部行数,是日常最常用的选项),此外还有-c 字节数(按字节显示头部内容)、-q(多文件查看时不显示文件名)等,新手重点掌握-n即可。

3. 高频用法与参数(新手必记,直接复制可用)

① 无参数:默认显示文件前10行(最基础用法)

【示例】查看当前目录下日志文件log.txt的前10行内容,快速了解日志启动信息:

head log.txt

【效果】终端会直接输出log.txt文件的前10行,无需加载整个文件,操作简洁高效,适合快速预览。

② 参数 -n 行数:指定显示的头部行数(日常最常用)

当默认的10行不符合需求时,用-n参数指定具体行数,可简写为“-行数”(省略n),更便捷。

【示例1】查看log.txt文件的前5行,精准预览关键开头内容:

head -n 5 log.txthead -5 log.txt(简写形式,推荐)

【示例2】查看系统配置文件/etc/passwd的前3行(用户信息头部),快速确认文件格式:

head -n 3 /etc/passwd

③ 补充用法:显示除了最后N行以外的所有内容(新手了解,工作偶用)

-n后面加上负数,代表“排除文件最后N行,显示剩余所有内容”,适合需要查看文件大部分内容、仅排除尾部无关内容的场景。

【示例】查看log.txt文件,显示除了最后100行以外的所有内容:

head -n -100 log.txt

④ 拓展用法:按字节显示头部内容(-c参数)

除了按行数显示,head还支持按字节显示头部内容,适合查看二进制文件或特定字节长度的内容。

【示例】查看test.bin文件的前1024个字节内容:

head -c 1024 test.bin

4. 新手避坑点

1. 若指定的行数大于文件的总行数,head不会报错,会直接显示文件的全部内容;

2. 查看二进制文件(如图片、可执行文件)时,会显示乱码,不要用head查看,避免影响判断;

3. 多文件查看时,默认会显示每个文件的文件名,若不想显示,可加上-q参数(如head -q file1 file2)。


二、tail 命令:查看文件尾部内容+实时监控日志(工作核心)

1. 命令作用

tail 命令与head对应,核心功能有两个:① 查看文件的尾部内容(默认显示最后10行);② 实时监控文件的新增内容(tail -f,工作必备)。它同样无需加载整个文件,处理大文件效率极高,尤其适合查看日志文件的最新记录、实时追踪服务运行状态,是运维、开发人员排查故障的核心工具之一。

2. 基本语法

格式:tail [选项] 文件名/文件路径b

核心选项(新手必记):

--n 行数:指定显示尾部的行数,可简写为“-行数”;

- -f:实时监控文件新增内容(工作最常用,重点掌握);

- -F:增强版实时监控,文件被删除、重命名后,重新创建同名文件仍能继续监控(应对日志轮转场景);

- -c 字节数:按字节显示尾部内容。

3. 高频用法与参数(新手必记,工作直接用)

① 无参数:默认显示文件最后10行(最基础用法)

【示例】查看log.txt文件的最后10行,快速了解日志最新记录:

tail log.txt

【场景】日常排查问题时,先查看日志最新10行,快速定位是否有错误信息。

② 参数 -n 行数:指定显示尾部的行数(常用)

与head的-n用法一致,可简写为“-行数”,适合精准查看尾部特定行数的内容。

【示例1】查看log.txt文件的最后5行,聚焦最新的日志记录:

tail -n 5 log.txttail -5 log.txt(简写,推荐)

【示例2】查看系统日志/var/log/syslog的最后20行,了解系统最新运行状态:

tail -n 20 /var/log/syslog

③ 参数 -f:实时监控文件新增内容(工作必备,重中之重)

当服务运行时,日志文件会不断新增内容,tail -f 会持续追踪文件末尾,只要有新内容写入,就会实时显示在终端上,排查服务故障、跟踪程序运行状态时必不可少。其工作原理是基于文件描述符持续读取文件末尾,一旦文件大小增加,就会显示新增部分。

【示例】实时监控系统日志/var/log/syslog的新增内容,跟踪系统运行状态:

tail -f /var/log/syslog

【效果】终端会一直处于监控状态,不会自动退出,只要日志有新增内容,就会实时刷新显示。

【退出监控】按 Ctrl + C 键,即可退出实时监控(必记,否则终端会一直占用)。

【工作场景】部署服务后,实时监控日志,查看服务是否启动成功;服务报错时,实时跟踪错误信息,快速定位问题原因。

④ 参数 -F:增强版实时监控(应对日志轮转,工作推荐)

日常工作中,日志文件会因大小限制被系统轮转(如log.txt重命名为log.txt.1,再创建新的log.txt),此时tail -f 会因追踪的是旧文件描述符而失效,无法监控新日志。而tail -F 会周期性尝试重新打开同名文件,即使文件被删除、重命名后重新创建,也能继续监控,生产环境中强烈推荐使用。

【示例】增强版实时监控Nginx访问日志,应对日志轮转:

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

⑤ 补充用法:按字节显示尾部内容(-c参数)

【示例】查看test.txt文件的最后100个字节内容:

tail -c 100 test.txt

⑥ 进阶用法:结合grep过滤关键信息(工作高频组合)

实时监控日志时,若日志内容过多,可结合grep命令过滤特定关键词(如错误、警告),减少信息噪音,快速定位关键内容。

【示例】实时监控log.txt,只显示包含“ERROR”的新增日志(忽略大小写用grep -i):

tail -f log.txt | grep "ERROR"

4. 新手避坑点(工作重点注意)

1. 实时监控(tail -f / tail -F)时,必须按Ctrl + C退出,不要强行关闭终端,否则可能导致终端异常;

2. 监控系统日志、服务日志时,普通用户可能因权限不足无法查看,需用sudo获取管理员权限(如sudo tail -f /var/log/auth.log);

3. 若指定的行数大于文件总行数,tail会显示文件全部内容,不会报错;

4. 日志轮转时,优先使用tail -F 而非tail -f,避免监控中断;

5. 多文件监控时,默认会显示每个文件的文件名,若不想显示,可加上-q参数。


三、head、tail 命令对比(快速选择,避免用错)

命令

核心功能

默认行为

高频场景

核心参数

head

查看文件头部内容

显示前10行

预览配置文件头部、数据文件列名

-n(指定行数)、-c(指定字节数)

tail

查看尾部内容、实时监控日志

显示最后10行

查看日志最新记录、排查服务故障

-n(指定行数)、-f(实时监控)、-F(增强监控)


四、工作实操练习(新手必做,快速上手)

跟着以下步骤练习,5分钟掌握两个命令的核心用法,直接对接工作场景:

1. 先创建一个测试文件(模拟日志文件):touch test.log && for i in {1..20}; do echo "log line $i" >> test.log; done(创建20行内容的测试日志);

2. 用head查看头部内容:head test.log(默认前10行)、head -n 3 test.log(前3行);

3. 用tail查看尾部内容:tail test.log(默认后10行)、tail -5 test.log(后5行);

4. 实时监控测试日志:打开一个新终端,输入tail -f test.log

5. 模拟日志新增:回到第一个终端,输入echo "new log line" >> test.log,观察第二个终端,会实时显示新增内容;

6. 退出实时监控:按Ctrl + C,尝试用tail -F test.log 再次监控,模拟日志轮转(删除test.log,重新创建并写入内容),观察监控是否继续生效;

7. 进阶练习:tail -f test.log | grep "new",实时过滤包含“new”的日志。


五、工作必备技巧总结(30秒记住,直接用)

1. 看开头:用head,head -n 行数 文件名,简写head -行数 文件名

2. 看结尾:用tail,tail -n 行数 文件名,简写tail -行数 文件名

3. 实时监控日志(工作核心):用tail -f 日志路径,退出按Ctrl + C

4. 应对日志轮转:用tail -F 日志路径,避免监控中断;

5. 过滤关键日志:用tail -f 日志路径 | grep "关键词",高效排查问题;

6. 核心原则:两个命令都无需加载整个文件,处理大文件高效,避免占用过多系统资源。

掌握这两个命令,就能轻松应对Linux文件首尾查看、日志实时监控的所有场景,尤其是tail -ftail -F,是工作中不可或缺的“神器”,练熟后能大幅提升工作效率。

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐