1. man tail


    除了自己亲身实践外,推荐这边不错的博文(tail 显示文件最后若干行内容

  2. 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)