man tail
除了自己亲身实践外,推荐这边不错的博文(tail 显示文件最后若干行内容)
TAIL(1) User Commands TAIL(1) NAME tail - output the last part of files 输出文件的最后一部分 SYNOPSIS tail [OPTION]... [FILE]... DESCRIPTION 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. 默认读取每个文件后10行到标准输出。如果有多个文件,在开头会给出文件名。 如果没有文件或文件为-,从标准输入读取。 Mandatory arguments to long options are mandatory for short options too. 长选项的参数就是短选项参数 -c, --bytes=K output the last K bytes; alternatively, use -c +K to output bytes starting with the Kth of each file 输出最后K个字节; 可供选择的是,使用 -c +K 将从每个文件开头的第K个字节开始读出后续字节。(即从第K个字节开始读到最后) -f, --follow[={name|descriptor}] output appended data as the file grows; -f, --follow, and --follow=descriptor are equivalent 当文件滚动,输出追加的数据 -f, --follow, --follow=descriptor 是相同的。 -F same as --follow=name --retry 等同于 --follow=name --retry (如果文件不存在,也一直尝试打开;虽会提示No such file or dicectory,但是仍然会等待。恢复了就会重建跟踪) -n, --lines=K output the last K lines, instead of the last 10; or use -n +K to output lines starting with the Kth 输出最后K行,而不是默认的最后10行; 或者使用 -n +K 从第K行开始输出到最后。 --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. 和inotify结合,这个选项很少使用。 --pid=PID with -f, terminate after process ID, PID dies 结合-f,PID死,监听就终止 -q, --quiet, --silent never output headers giving file names --retry keep trying to open a file even when it is or becomes inaccessible; useful when following by name, i.e., with --follow=name 继续尝试打开一个文件,即使它是或变得不可访问。当使用--follow=name时很有用。 -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. 两次检查间隔时间,结合inotify和--pid使用,至少每隔N秒,检查进程P是否存在。进程结束,tail也就终止了。 如tail -f -s 3 --pid=26401 test.txt2 tail --follow=name -s 3 --pid=41581 test.txt2 -v, --verbose always output headers giving file names --help display this help and exit --version output version information and exit 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. K可以有后缀,如b,kB,k,MB,M,GB,G,等等 T,P,E,Z,Y With --follow (-f), tail defaults to following the file descriptor, which means that even if a tail’ed file is renamed, tail will continue to track its end. This default behavior is not desirable when you really want to track the actual name of the file, not the file descriptor (e.g., log rotation). Use --follow=name in that case. That causes tail to track the named file in a way that accommodates renaming, removal and creation. 使用--follow(-f),tail默认为“跟随文件描述符”,这意味着即使尾部的文件被重命名,tail将继续跟踪它的结束。 当您真正想要跟踪文件的实际名称而不是文件描述符(例如,日志旋转)时,此默认行为是不可取的。 在这种情况下使用--follow=name。这使得tail以适应重命名,删除和创建的方式跟踪被命名的文件。 #tail --follow=name test.txt # mv test.txt test2.txt ; mv test2.txt test.txt (还能恢复追踪,而跟踪描述符不行) tail: test.txt: No such file or directory tail: `test.txt' has become accessible 总结:要想跟踪变动的日志的话,用tail -F 而不是tail -f AUTHOR Written by Paul Rubin, David MacKenzie, Ian Lance Taylor, and Jim Meyering. REPORTING BUGS Report tail bugs to bug-coreutils@gnu.org GNU coreutils home page: <http://www.gnu.org/software/coreutils/> General help using GNU software: <http://www.gnu.org/gethelp/> Report tail translation bugs to <http://translationproject.org/team/> COPYRIGHT Copyright 2010 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>. This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. SEE ALSO The full documentation for tail is maintained as a Texinfo manual. If the info and tail programs are properly installed at your site, the command info coreutils 'tail invocation' should give you access to the complete manual. GNU coreutils 8.4 April 2012 TAIL(1)