陕西李二宝:tail

来源:百度文库 编辑:偶看新闻 时间:2024/04/28 02:47:06
-f 是--follow[=HOW]的缩写, 可以一直读文件末尾的字符并打印出来."[=HOW]"有两个写法,一个"=descriptor",另一个是"=name", 默认使用的是"descriptor", 如果你跟踪的文件被移动或者改名后, 你还想继续tail它, 你可以使用这个选项.举个例子:首先启动下面进程while [ "true" ] ; do date >> test.log; sleep 1 ; done;然后在开一个新的进程,我是新开了一个终端, 起名叫 bash-2tail -f test.log你会看到屏幕不断有内容被打印出来. 这时候中断第一个进程Ctrl-C,mv test.log test.log1;while [ "true" ] ; do date >> test.log1; sleep 1 ; done;继续观察bash-2, 发现屏幕在输出test.log2的内容.descriptor 虽然是默认的参数,但是一定是最有用的,比如在tail 一个log文件的时候,这个文件很可能是按照日期或者大小滚动, 文件滚动之后这个tail -f命令,就失效了.  我在之前写的一个脚本里面就遇到了这个问题, 这个时候可以使用-F 命令-F 是--follow=name --retry的缩写, --follow=name是按照文件名跟踪文件, 可以定期去重新打开文件检查文件是否被其它程序删除并重新建立. --retry这个参数, 保证文件重新建立后,可以继续被跟踪.还是上面的例子,在bash-1中输入,while [ "true" ] ; do date >> test.log; sleep 1 ; done;bash-2中,tail -F test.logbash-3中,rm test.log;然后看bash-2, 屏幕上依然在继续输出test.log的内容. 如果是在使用-f 时候,那bash-2应该就停止显示log了.