`tail -f` 有时会停止更新 - 并且文件没有移动

war*_*ren 10 logging rhel5 tail

我最近注意到有时tail -f <logfile>会停止更新到屏幕。

不过,做一个Ctrl>-C并重新启动tail工作正常。我检查以确保日志文件没有在中途旋转(这可能会让人tail失去理智)。

什么会导致这种情况?我正在运行 RHEL 5.2 x64。

Mik*_*eyB 9

尝试使用:

tail --follow=name <logfile>

看看是否效果更好。您不必担心它会从您身下旋转出来。


它停止的任何模式?一定的时间?一天中的某个时间?


dav*_*vey 6

strace如果有的话,请尝试将 tail 命令包装起来:

strace -Tt -o /tmp/tail.trace tail -f /var/log/messages
Run Code Online (Sandbox Code Playgroud)

然后只是为了疯狂的递归踢,你可以拖尾 strace 输出(如果它因为输出到文件而中断则无关紧要):

 tail -f /tmp/tail.trace
Run Code Online (Sandbox Code Playgroud)

我的看起来像:

8:39:00 write(1, "ng SMAC\n", 8)       = 8 <0.000026>
18:39:00 read(3, "", 0)                 = 0 <0.000019>
18:39:00 fstat64(3, {st_mode=S_IFREG|0640, st_size=92990, ...}) = 0 <0.000019>
18:39:00 fstatfs64(3, 84, {f_type="EXT2_SUPER_MAGIC", f_bsize=4096, f_blocks=4807069, f_bfree=1924458, f_bavail=1680271, f_files=1221600, f_ffree=820806, f_fsid={-1331083162, -1313908385}, f_namelen=255, f_frsize=4096}) = 0 <0.000021>
18:39:00 inotify_init()                 = 4 <0.000033>
18:39:00 inotify_add_watch(4, "/var/log/messages", IN_MODIFY|IN_ATTRIB|IN_DELETE_SELF|IN_MOVE_SELF) = 1 <0.000041>
18:39:00 fstat64(3, {st_mode=S_IFREG|0640, st_size=92990, ...}) = 0 <0.000019>
18:39:00 read(4,
Run Code Online (Sandbox Code Playgroud)

-t 开启时间,-T 开启通话时间。

按回车 4 或 5 次以腾出一点垂直空间,然后等待它停止拖尾。希望输出中会有一些线索。