如何对日志旋转文件执行“ tail -f”操作?


106

在长时间运行的系统上,我通常会有一个终端

$ tail -f /var/log/kern.log

或类似的东西。

但是由于我不再显示新消息,因此我有时需要重新启动该命令。

我认为这是因为替换日志文件的日志轮换作业tail -f正在“监视”。

如何避免这种重启问题?

我是否可以调用tail它,使其注意到旋转过程并做正确的事情?

(我在rsyslogd默认使用的Ubuntu 11.04系统上注意到此问题。)


Answers:


162

使用该-F选项:

tail -F /var/log/kern.log

-F选项指示tail按文件名跟踪对文件的更改,而不是使用在旋转期间更改的inode编号。如果文件不存在,它将继续尝试打开文件。


7
太好了,是的,我是。(仅作记录,这是一个GNU tail选项-当然,在Ubuntu上默认是GNU tail)。
maxschlepzig 2011年

您是对的:-/我没有注意到您提出的Ubuntu仅是一个例子。
andcoz 2011年

根本不是问题-我只是评论完整性(有时我只是想看看什么是POSIX,什么不是)。问题的确与Ubuntu有关。
maxschlepzig 2011年

1
tail -F /var/log/kern.log相当于tail -f --follow=name --retry /var/log/kern.log
巴吉(Basj)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.