2015-08-13 41 views
2

我有log.file一个日志文件的内容尾-f日志文件没有显示新添加的条目

123 
123 
321 
312 
123 
412 
151 

我已经做了tail -f log.file。在其他会话中,我打开了相同的日志文件并添加了更多值。我的假设是tail -f log.file应显示新附加的值,但未显示。

+0

请回答,并把-1 – user60679

+0

你保存在其他会话中的文件? – Nishant

+0

是的,我做到了。我已经注意到更多的行为,如echo'aaaa'>> logfile反映了尾部-f日志文件输出,但在vi编辑器中我写过(:w)它没有反映在尾部-f日志文件 – user60679

回答

2

这取决于你如何打开文件并追加。你必须确保改变发生 “到位”

这将工作:

echo >> logfile 

这不会:

vi logfile 

为什么不呢? vi相当于:

mv logfile logfile~ 
echo >> logfile 

命令序列后,tail -f将遵循logfile~;它不会看到新创建的文件。

发生这种情况是因为tail不遵循名称;它遵循文件描述符,该名称在名称更改时不会更改。这种方法允许Unix各种巧妙的技巧(如echo附加到文件,而tail已打开)。

tail -F会工作,因为它注意到该文件已重命名。

+0

但对我来说,即使尾巴-f工作,为什么呢? – Nishant

+0

@Nishant:你如何修改文件?如果你修改了地方,它就可以工作。但是你可能有一个特殊版本的“tail”;我正在从包coreutils谈论GNU Tail。 –

+0

我在一个putty会话中使用vi打开文件并对其进行了修改,而tail -f file.txt在另一个会话中运行。 – Nishant