前言
tail命令和head命令一样,使用比较频繁,尤其是在调试日志的时候用的比较多。
接下来我们一起探讨下tail命令的使用
1.tail命令的介绍
tail命令的功能是用于查看文件尾部内容,例如默认会在终端界面上显示出指定文件的末尾十行,如果指定了多个文件,则会在显示的每个文件内容前面加上文件名来加以区分。
高阶玩法的-f参数作用是持续显示文件的尾部最新内容,类似于机场候机厅的大屏幕,总会把最新的消息展示给用户,对阅读日志文件尤为适合,而不需要手动刷新。
2.常用参数
参数 |
意义 |
-c |
输出文件尾部的N(N为整数)个字节内容 |
-f |
持续显示文件最新追加的内容 |
-F<N> |
与选项“-follow=name”和“--retry”连用时功能相同 |
-n <N> |
输出文件的尾部N(N位数字)行内容 |
--retry |
即是在tail命令启动时,文件不可访问或者文件稍后变得不可访问,都始终尝试打开文件。 |
--pid=<进程号> |
与“-f”选项连用,当指定的进程号的进程终止后,自动退出tail命令 |
--help |
显示指令的帮助信息 |
--version |
显示指令的版本信息 |
可以使用tail --help命令查看所有参数
[root@mufenggrow ~]# tail --help
用法:tail [选项]... [文件]...
Print the last 10 lines of each FILE to standard output.
With more than one FILE, precede each with a header giving the file name.
With no FILE, or when FILE is -, read standard input.
Mandatory arguments to long options are mandatory for short options too.
-c, --bytes=K output the last K bytes; or use -c +K to output
bytes starting with the Kth of each file
-f, --follow[={name|descriptor}]
output appended data as the file grows;
an absent option argument means 'descriptor'
-F same as --follow=name --retry
-n, --lines=K output the last K lines, instead of the last 10;
or use -n +K to output starting with the Kth
--max-unchanged-stats=N
with --follow=name, reopen a FILE which has not
changed size after N (default 5) iterations
to see if it has been unlinked or renamed
(this is the usual case of rotated log files);
with inotify, this option is rarely useful
--pid=PID with -f, terminate after process ID, PID dies
-q, --quiet, --silent never output headers giving file names
--retry keep trying to open a file if it is inaccessible
-s, --sleep-interval=N with -f, sleep for approximately N seconds
(default 1.0) between iterations;
with inotify and --pid=P, check process P at
least once every N seconds
-v, --verbose always output headers giving file names
--help 显示此帮助信息并退出
--version 显示版本信息并退出
If the first character of K (the number of bytes or lines) is a '+',
print beginning with the Kth item from the start of each file, otherwise,
print the last K items in the file. K may have a multiplier suffix:
b 512, kB 1000, K 1024, MB 1000*1000, M 1024*1024,
GB 1000*1000*1000, G 1024*1024*1024, and so on for T, P, E, Z, Y.
如果您希望即时追查一个文件的有效名称而非描述内容(例如循环日志),默认
的程序动作并不如您所愿。在这种场合可以使用--follow=name 选项,它会使
tail 定期追踪打开给定名称的文件,以确认它是否被删除或被其它某些程序重新创建过。
3. tail 使用案例示范
3.1 输出后10行
[root@mufenggrow ~]# tail /etc/passwd |wc -l
10
3.2 输出最后100个字符
[root@mufenggrow ~]# tail -c 100 /etc/passwd
123456
laoxin:x:1000:1000:laoxin:/home/laoxin:/bin/bash
itlaoxin:x:1001:1001::/home/itlaoxin:/bin/bash
3.3 从第100个字符开始输出,一直到最后
[root@mufenggrow ~]# tail -c +100 /etc/passwd
login
adm:x:3:4:adm:/var/adm:/sbin/nologin
3.4 从第43行开始一直到最后
[root@mufenggrow ~]# tail -n +43 /etc/passwd
tcpdump:x:72:72::/:/sbin/nologin
3.5 输出文件的最后十行并监控文件内容的变化
这里就可以使用tail -f动态的监控日志的变化。
4. tailf, tail -f , tail -Fd 区别
tail -f:等同于–follow=descriptor,常用于日志内容的跟踪,根据文件描述符进行追踪,当文件改名或被删除,追踪停止
tail -F:等同于–follow=name --retry,根据文件名进行追踪,并保持重试,即该文件被删除或改名后,如果再次创建相同的文件名,会继续追踪
tailf:等同于tail -f -n 10 与tail -f不同的是,如果文件不增长,它不会去访问磁盘文件。
5.最后
tailf特别适合那些便携机上跟踪日志文件,因为它减少了磁盘访问,节省了资源。
当我们设置了滚动日志时,需要持续实时监控最新的日志输出,那么就要用tail -F,而不能用tailf 和 tail -f。
滚动日志达到一定的阈值就会重新命名,这三个命令中只有tail -F可以在重新命名后继续追踪。