tail 命令在 Linux 系统中用来输出文件的末尾部分,它跟 head 命令刚好相反。我日常使用这个命令来查看各种日志文件,因为它可以持续跟踪并输出指定日志的最新内容。
tail 命令格式
tail [选项]... [文件]...
tail 命令默认输出文件最后的 10 行内容给标准输出,如果提供了多个文件,会依次显示,并在输出每个文件内容之前给出文件名。另外文件参数是可选的,如果不提供文件参数,默认从标准输入读取内容。
tail 命令示例
输出 /var/log/nginx/access.log 文件中最新的 10 条日志内容:
tail /var/log/nginx/access.log
输出文件最后的 10 个字符:
tail -c 10 /var/log/nginx/access.log
跟踪输出文件的最新内容:
tail -f /var/log/nginx/access.log
tail 命令选项
| 缩写 | 完整名称 | 说明 | |
|---|---|---|---|
--retry |
不停地尝试打开文件。只与 -f 合用时有效。 |
||
-c |
--bytes=N |
输出最后 N 个字节。 |
|
-f |
--follow[={name |
descriptor}] | 当文件增长时,输出后续添加的数据。 |
-n |
--lines=N |
自定义命令输出行数。 | |
--max-unchanged-stats=N |
与 --follow=文件 格式的命令选项一起使用,N 是追踪文件删除或改名状态后的重新打开限制次数。默认为 5 次。 |
||
--max-consecutive-size-changes=N |
跟踪文件尾部大小变化的次数,默认为 200。 | ||
--pid=PID |
与 -f 合用,表示在进程 ID,PID 死掉之后结束。 |
||
-q |
--quiet, --silent |
从不输出文件名的首部。 | |
-s |
--sleep-interval=S |
与 -f 合用,表示在每次反复的间隔休眠 S 秒。 |
|
-v |
--verbose |
总是输出文件名的首部。 | |
--help |
显示帮助信息后退出。 | ||
--version |
输出版本信息后退出。 |
在使用 -c,-n 选项时,默认是从文件最后开始,往前算 N 项开始显示。选项值 N 的第一个字符可以为 +,这样表示从文件的开头算起,从第 N 项开始显示。N 还可以有一个倍数后缀,可用值分别如下:
b表示 512k表示 1024m表示 1048576
使用 -f 或是 --follow 选项时,tail 命令后默认接文件描述符,这意味着在命令跟踪的过程中即便文件被改名了,依然可以被命令追踪到末尾追加的内容。如果不希望出现这种行为,可以使用 --follow=文件名 这种命令选项格式。这样 tail 命令会周期性的打开文件是否被改删除或是重建了。