tail (Unix)

✍ dations ◷ 2025-04-30 10:44:16 #tail (Unix)

tail是Unix、类Unix系统、FreeDOS和MSX-DOS上的一个程序,用于显示文本文件或管道数据的尾部。

FreeDOS版本是由M.Aitchison开发的。

tail命令也是ASCII的MSX-DOS版本2的MSX-DOS2工具的一部分。

pctail是使用Python编写的,可以对syslog的尾部进行着色并输出。

MultiTail不仅可以用颜色显示日志文件,还可以对一个终端窗口进行合并、过滤、回滚和分割成子窗口,它多少是tail、sed、watch、CCZE/pctail、grep、diff、Beeper等的组合。

命令语法是:

tail  <filename>

默认情况下,tail会将其输入的最后10行输出到标准输出。通过命令行选项,可以改变输出量和单位(行、块或字节)。

> tail -n1 report-13*==> report-1301 <==Total tons output for month of January '13 was 523==> report-1302 <==Total tons output for month of February '13 was 272==> report-1303 <==Total tons output for month of March '13 was 623

这个例子输出了报告的最后4个字符,并使用--slient禁止了文件名的显示。请注意,计数包括每行末尾的换行符,因此输出的结果并不包括预期的前导空格。

> tail --silent -c4 report*523272623

这个例子显示了从第二行开始的所有行。

tail -n +2 report

使用旧的语法(在Sun Solaris的旧版本中仍然使用,因为不支持-n选项),最后20行和最后50个字节的文件名可以用以下命令显示。

tail -20 filenametail -50c filename

然而这种语法现在已经过时了,不符合POSIX 1003.1-2001标准。即使在当前的版本中仍然支持,当与其他选项(如 -f,见下文)一起使用时,这些选项可能根本无法工作。

与所有的Unix命令一样,使用系统上的手册页来获取特定的选项和操作。

tail有两个特殊的命令行选项:“-f”和“-F”(follow),允许监视一个文件。tail不是只显示最后几行然后退出,而是显示这些行,然后监视文件。当其他进程向文件中添加新行时,tail会更新显示。这对于监控日志文件特别有用。古老版本的tail默认每秒钟轮询一次文件,但GNU coreutils 7.5版本的尾巴支持2005年8月Linux内核2.6.13版本中引入的inotify基础架构,只有当内核通知文件发生变化时才会检查文件。

下面的命令将显示最后10行信息,并在信息中添加新行时追加新行。

tail -f /var/adm/messages

为了保持跟踪日志,即使它被重新创建、重命名或作为日志轮换的一部分被删除,至少BSD和GNU的实现提供了一个-F选项,这在用户跟踪一个会轮换的日志文件时很有用。

tail -F /var/adm/messages

要在tail监控时中断它,用Ctrl+C中断。

有一个GNU Emacs的模式可以模拟tail -f的功能,称为auto-revert-tail-mode。

相关